2009-01-16 15 views
19

आईआईएस 6 के तहत चल रही मेरी डब्ल्यूसीएफ सेवा प्राप्त करने का प्रयास कर रहा है।डब्ल्यूसीएफ आईआईएस 6.0 के तहत नहीं चल रहा है

मैंने .svc और aspnet_isapi.dll मैपिंग के अनुसार बनाया है: http://msdn.microsoft.com/en-us/library/ms752241.aspx

Server1.svc पेज देखते समय, मुझे 404 मिल रहा है।

I यूआरएल काम कर रहा है यह सुनिश्चित करने के लिए साइट को एक सरल .aspx पेज के साथ परीक्षण किया है, लेकिन फिर .svc एक्सटेंशन नहीं है।

मेरे पास .NET 3.5 SP1 स्थापित है, मेरा web.config 3.5 असेंबली का संदर्भ दे रहा है, और मुझे .aspx पृष्ठ देखते समय कोई त्रुटि नहीं मिलती है, इसलिए यह उन असेंबली को ठीक से उठा रहा है, संभवतः।

क्या गलत हो सकता है?

+1

एक दूरस्थ सर्वर orlocalhost पर इस है? अगर रिमोट, क्या आपने सत्यापित किया है कि सब कुछ स्थानीय रूप से पहले काम करता है? –

उत्तर

6

दो चीजें मैं के बारे में सोच सकते हैं:

.svc विस्तार ठीक से सेट नहीं किया जाता है (कम से कम अपने विवरण के अनुसार संभावित)। अधिक जानकारी के लिए आप यह post देख सकते हैं।

या आपकी वेबसाइट में कई होस्ट हेडर हैं। इस समस्या को हल करने के लिए, आपके पास एक होस्ट हेडर होना चाहिए या फ़ैक्टरी का उपयोग करना चाहिए।

namespace MyNamespace 
{ 
    public class MultipleHostServiceFactory : ServiceHostFactory 
    { 
     protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
     { 
      List<Uri> addresses = new List<Uri>(); 
      addresses.Add(baseAddresses[0]); 
      return base.CreateServiceHost(serviceType, addresses.ToArray()); 
     } 
    } 
} 

बाद, आप अपने .svc फ़ाइल के मार्कअप में कारखाना स्थापित करने की आवश्यकता: यहाँ एक उदाहरण है

<%@ ServiceHost Language="C#" 
       Debug="false" 
       Factory="MyNamespace.MultipleHostServiceFactory" 
       Service="MyNamespace.MyService" 
       CodeBehind="MyService.svc.cs" %> 
+0

आईपी – Blankman

+1

का उपयोग करके, मैं जो देख सकता हूं उससे कोई होस्ट हेडर नहीं हैं, आपने ओपी के मुद्दे को हल नहीं किया हो सकता है, लेकिन आपको मेरा मिल गया है! – RSolberg

20

से अधिक होने की संभावना .svc विस्तार संभाला जा रहा के रूप में आईआईएस के तहत पंजीकृत नहीं है एएसपी.नेट (डब्ल्यूसीएफ) द्वारा।

इन 2 चरणों (Framework64 साथ फ्रेमवर्क की जगह अगर यह आवश्यक है) का प्रयास करें:

जाएं:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\ 

और उसके बाद चलाएँ:

aspnet_regiis -i 

जाएं: C: \ विंडोज़ \ माइक्रोसॉफ्ट.NET \ Framework \ v3.0 \ विंडोज संचार फाउंडेशन

और उसके बाद चलाएँ:

ServiceModelReg.exe -i 
+0

यह मेरे लिए काम किया! धन्यवाद –

+0

यह एक जीवन बचतकर्ता था! मुझे केवल "aspnet_regiis" चलाया गया था और इसे ठीक किया गया था। –

+1

यदि आप भागते हैं- मैं पहले सभी .NET इंस्टॉलेशन को "ब्रेक" नहीं करता हूं? हमारी पूरी वेबसाइट चल रही है .net 1 ... मुझे wcf काम करने की आवश्यकता है। क्या मुझे -ई झंडे के साथ भागना चाहिए? मैं कोई मौजूदा सामान नहीं बदलना चाहता हूं। – BabelFish

17

Internet Information Service (IIS) Manager के तहत, नोड Web Service Extension बुलाया खोलें। सुनिश्चित करें कि ASP.NET v2.0.5.0727 अनुमत करने के लिए सेट है। मैंने कई अलग-अलग सेटिंग्स की तलाश में घंटों बिताए और पाया कि यह निषिद्ध है। ASP.NET को सक्षम करने के लिए बस अनुमति दें बटन पर क्लिक करें।

+0

धन्यवाद, आपने बस मेरी तैनाती तय की है! – stuartd

+0

@ स्टुअर्ट डंकेल, आपका स्वागत है। मुझे खुशी है कि इससे मदद मिली। –

+0

यह एएसपी.NET v4 के साथ भी हो सकता है ... –

3

मुझे एक ही समस्या थी। यह समाप्त हो गया कि मैं विंडोज 2003 सर्वर का 64-बिट संस्करण चला रहा था, और मेरे असेंबली "किसी भी CPU" के लिए कॉन्फ़िगर किया गया था। एक बार जब मैंने असेंबली को x86 पर बदल दिया और सर्वर पर अपलोड किया, तो सबकुछ काम करता था।

मुझे नहीं पता कि 30 धागे में मैंने किसी और ने इसका उल्लेख क्यों नहीं किया है, लेकिन मेरे दोस्त ने मुझे यह सिफारिश की है, और यह एक आकर्षण की तरह काम करता है।

बस किसी को भी एक ही समस्या होने पर बस इसे बाहर फेंक दें।

0

मेरे पास एक ही समस्या थी और इसे आईएसएपीआई एक्सटेंशन की अनुमति देकर हल किया गया। इंटरनेट इनफॉर्मेशन सर्विस (आईआईएस) मैनेजर के तहत, वेब सेवा एक्सटेंशन नामक नोड खोलें। सुनिश्चित करें कि "सभी अज्ञात ISAPI एक्सटेंशन" अनुमत पर सेट है।

0

मैं इस के साथ घंटे के लिए लड़ाई लड़ी जब तक मैं अंत में इस उदाहरण का इस्तेमाल किया और यह पहली बार जाना काम: http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide

मैं जानता हूँ कि लिंक केवल जवाब अच्छा नहीं कर रहे हैं और अन्य लोगों के solve this type of problem here at Stackoverflow तो यहाँ हैं करने के लिए इस सी.पी. लिंक का इस्तेमाल किया है बुनियादी कदम अगर लेख कभी नीचे चला जाता है:

कदम 1

सबसे पहले दृश्य स्टूडियो 2010 क्लिक करें फ़ाइल> NEW-> परियोजना का शुभारंभ। नया "डब्ल्यूसीएफ सेवा आवेदन" बनाएं।

कदम 2

एक बार जब आप प्रोजेक्ट बनाते हैं, तो आप डिफ़ॉल्ट WCF सेवा और इंटरफ़ेस फ़ाइल से पहले से ही बनाए जाते हैं समाधान (Service1.cs & IService.cs) में देख सकते हैं। इन दो फाइलों को हटाएं और हम अपना इंटरफ़ेस और डब्ल्यूसीएफ सेवा फ़ाइल तैयार करेंगे।

कदम 3

समाधान पर अब सही क्लिक करें और एक नया WCF सेवा फ़ाइल बनाएँ। मैंने सेवा फ़ाइल को "RestServiceImpl.svc" नाम दिया है।

चरण 4

जैसा कि मैंने लेख है कि हम एक API जो एक्सएमएल और JSON प्रारूप में डेटा लौट सकते हैं लिख दिया जाएगा के शुरू में बताया गया है, कि यहाँ के लिए इंटरफेस है। IRestServiceImpl में, निम्न कोड

उपरोक्त कोड में, आप IRestService के दो अलग-अलग तरीकों को देख सकते हैं जो XMLData और JSONData हैं। एक्सएमएलडेटा एक्सएमएल में परिणाम देता है जबकि JSON में JSONData।

[ServiceContract] 
public interface IRestServiceImpl 
{ 
    [OperationContract] 
    [WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Xml, 
     BodyStyle = WebMessageBodyStyle.Wrapped, 
     UriTemplate = "xml/{id}")] 
    string XMLData(string id); 

    [OperationContract] 
    [WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Wrapped, 
     UriTemplate = "json/{id}")] 
    string JSONData(string id); 
} 

कदम 5

ओपन फाइल RestServiceImpl.svc.cs और वहाँ पर निम्नलिखित कोड लिखें:

public class RestServiceImpl : IRestServiceImpl 
{ 
    public string XMLData(string id) 
    { 
     return "You requested product " + id; 
    } 

    public string JSONData(string id) 
    { 
     return "You requested product " + id; 
    } 
} 

कदम 6

Web.Config

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <services> 
     <service name="RestService.RestServiceImpl" behaviorConfiguration="ServiceBehaviour"> 
     <!-- Service Endpoints --> 
     <!-- Unless fully qualified, address is relative to base address supplied above --> 
     <endpoint address ="" binding="webHttpBinding" contract="RestService.IRestServiceImpl" behaviorConfiguration="web"> 
      <!-- 
       Upon deployment, the following identity element should be removed or replaced to reflect the 
       identity under which the deployed service runs. If removed, WCF will infer an appropriate identity 
       automatically. 
      --> 
     </endpoint> 
     </service> 
    </services> 

    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceBehaviour"> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="true"/> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

चरण 7

आईआईएस में:

enter image description here

संबंधित मुद्दे