2010-10-02 20 views
5

में होस्टिंग मैं जबEndpoint नहीं मिला जब ASP.NET

http://localhost:10093/Services/Service1.svc 

पर ब्राउज़र के माध्यम से मेरी सेवा तक पहुँचने का प्रयास मैं "नहीं मिला Endpoint" मिल "त्रुटि: http://localhost:10093/Services/Service1.svc से मेटाडाटा नहीं प्राप्त कर सकता" जब करने का प्रयास wcftestclient से एक ही पते तक पहुंचें।

मैं सेवा कार्यान्वयन से हिट करता है में एक ब्रेकपाइंट जगह है, इसलिए मुझे लगता है अगर एसवीसी फ़ाइल सही ढंग से सेटअप है:

<system.serviceModel> 
    <services> 
     <service name="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service" 
       behaviorConfiguration="MainServiceBehavior"> 
     <endpoint name="newEndpoing" 
      binding="basicHttpBinding" bindingConfiguration="" 
      contract="MyApp.Core.Service.IMyAppService" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MainServiceBehavior"> 
      <serviceMetadata httpGetEnabled="True"/> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
+0

मुद्दे के साथ एक नमूना परियोजना है - मैं एक ही मुद्दा है http://www.nippyzip.com/uploads/101003074000-57717.zip – chief7

+0

। और अंत बिंदु के बिना मेरे Silverlight अनुप्रयोग – Evgeny

उत्तर

5

तो तुम एक है:

<%@ ServiceHost Language="C#" Debug="true" 
Service="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service" 
Factory="CommonServiceFactory.WebServiceHostFactory,CommonServiceFactory" %> 

यहाँ मेरी config है * आपकी सेवा होस्ट करने के लिए .svc फ़ाइल। क्या आप उस फ़ाइल पर विजुअल स्टूडियो में राइट-क्लिक कर सकते हैं और "ब्राउज़र में दिखाएं" कह सकते हैं? क्या आपको वहां कुछ भी मिलता है, या क्या यह तुरंत एक त्रुटि फेंक देता है ??

अगला: आपकी सेवा एंडपॉइंट में address="" विशेषता नहीं है, जो मुझे विश्वास है अनिवार्य है - इसे जोड़ने का प्रयास करें (भले ही आप इसमें कोई पता निर्दिष्ट न करें)।

यदि आप आईआईएस में होस्टिंग कर रहे हैं, तो आपका सेवा पता वर्चुअल निर्देशिका द्वारा परिभाषित किया गया है जहां आपकी एसवीसी फ़ाइल मौजूद है, और एसवीसी फ़ाइल स्वयं - आप शायद एक विशिष्ट पोर्ट या कुछ भी परिभाषित नहीं कर पाएंगे (आईआईएस संभाल लेंगे उस)।

तो

http://localhost/Services/Service1.svc 

कनेक्ट करने का प्रयास किसी भी संयोग से कि काम करता है ??

अपडेट: फिर से और अधिक बारीकी से अपने पोस्ट को पढ़ने के लिए, आपको सेवा के लिए एक विशेष कारखाने निर्दिष्ट कर रहे हैं - WebServiceHostFactory। क्या यह डिफ़ॉल्ट WebServiceHostFactory .NET द्वारा प्रदान किया गया है, या यह है कि आपने स्वयं बनाया है ??

बिंदु है: .NET WebServiceHostFactory RESTful WCF सेवाओं के लिए webHttpBinding का उपयोग करेगा - कि कि समाप्ति बिंदु basicHttpBinding को निर्दिष्ट साथ काम नहीं करेंगे, और न ही बाकी सेवा किसी भी मेटाडाटा .... होगा

अद्यतन # 2: केवल सेवा के पूर्ण योग्य वर्ग नाम का उपयोग करने का प्रयास करें, लेकिन असेंबली विनिर्देश के बिना, आपकी एसवीसी फ़ाइल और कॉन्फ़िगरेशन फ़ाइल दोनों में। यह करने के लिए

Service="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service" 

:

तो यह बदल

Service="MyApp.Core.Service.Service.MyAppService" 

एसवीसी फ़ाइल:

<%@ ServiceHost Language="C#" Debug="true" 
Service="MyApp.Core.Service.Service.MyAppService" %> 

कॉन्फ़िग फ़ाइल:

<services> 
    <service name="MyApp.Core.Service.Service.MyAppService" 
      behaviorConfiguration="MainServiceBehavior"> 
    <endpoint name="newEndpoing" 
      binding="basicHttpBinding" bindingConfiguration="" 
      contract="MyApp.Core.Service.IMyAppService" /> 
    </service> 
</services> 
+0

के लिए क्लाइंट उत्पन्न नहीं कर सकता हां, मैं सेवा होस्ट करने के लिए एक .svc का उपयोग कर रहा हूं। जब मैं राइट क्लिक करता हूं और ब्राउजर में देखता हूं तो मुझे वही मिलता है। – chief7

+1

खाली पता जोड़ा गया, कोई बदलाव नहीं। बंदरगाह के बिना की कोशिश की यूआरएल, प्राप्त "इंटरनेट एक्सप्लोरर वेबपेज प्रदर्शित नहीं कर सकता" यह एक विशेष कारखाने है, लेकिन मैं मानक मेजबान कारखाना उपयोग करने की कोशिश और एक ही त्रुटि – chief7

+1

मिला @ Chief7: जब तक आप में "दृश्य ऐसा नहीं कर सकते के रूप में ब्राउजर "सफलतापूर्वक, आपकी सेवा में एक बड़ी समस्या है और जब तक यह काम नहीं करता है, तो आप सेवा लॉन्च नहीं कर पाएंगे। –

0

आपका त्रुटि संदेश "मेटाडाटा नहीं प्राप्त कर सकता" और आप एक MetadataExchange endpoint परिभाषित नहीं है। आपके पास httpGetEnabled = "True" है, जो भी आवश्यक है।

एक MEX समाप्ति बिंदु को परिभाषित करने का प्रयास करें, विवरण कैसे को देखने के लिए: http://bloggingabout.net/blogs/dennis/archive/2006/11/09/WCF-Part-4-3A00-Make-your-service-visible-through-metadata.aspx

+1

उत्तर के लिए धन्यवाद लेकिन मैक्स एंडपॉइंट – chief7

0

मेरी WCF सेवा के लिए मेरे web.config से मिलता-जुलता है। शिराज ने कहा कि आपको निश्चित रूप से एमईएक्स एंडपॉइंट जोड़ना होगा। मैंने एक व्यवहार कॉन्फ़िगरेशन जोड़ा है जो किसी भी संदेश आकार को डब्ल्यूसीएफ के माध्यम से जाने देता है। इन सेटिंग्स का उपयोग करने के लिए अगर यह आपकी मदद कर सकता (मत भूलना अनुबंध सेटिंग में बदलाव करने के लिए) का प्रयास करें: अपने .svc "दृश्य मार्कअप" का उपयोग करके खोलने अपने समाधान Explorer पर

<system.serviceModel>  
<diagnostics> 
    <messageLogging logMalformedMessages="true" logMessagesAtTransportLevel="true" /> 
</diagnostics> 
<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_IService" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="524288000" maxBufferPoolSize="524288000" maxReceivedMessageSize="524288000" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> 
     <readerQuotas maxDepth="500000000" maxStringContentLength="500000000" maxArrayLength="500000000" maxBytesPerRead="500000000" maxNameTableCharCount="500000000" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" realm=""> 
      <extendedProtectionPolicy policyEnforcement="Never"/> 
     </transport> 
     <message clientCredentialType="UserName" algorithmSuite="Default"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="serviceBehavior"> 
     <dataContractSerializer maxItemsInObjectGraph="6553600" /> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service behaviorConfiguration="serviceBehavior" name="RC.Svc.Web.TPF.Service"> 
    <endpoint 
     address="" 
     binding="basicHttpBinding" 
     bindingConfiguration="BasicHttpBinding_IService" 
     contract="RC.Svc.Web.TPF.IService" /> 
    <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" /> 
    </service> 
</services> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
<client /> 

+0

जोड़ने के बाद कोई बदलाव नहीं है आप आसानी से जांचने के लिए अपने विजुअल स्टूडियो फ़ोल्डर में WcfTestClient.exe का भी उपयोग कर सकते हैं (विजुअल स्टूडियो 10.0 \ Common7 \ IDE \ WcfTestClient.exe और http://msdn.microsoft.com/en-us/library/bb552364.aspx)। आपको एक काम कर रहे एमएक्स एंडपॉइंट की आवश्यकता होगी। –

+1

मेरे पास एक मैक्स पॉइंट परिभाषित है और Wcftestclient में सेवा जोड़ने का प्रयास किया है। मैं कहता हूं कि सेवा सफलतापूर्वक जोड़ा गया था लेकिन सूची में कोई भी सेवा नहीं जोड़ा गया है। – chief7

4

, सुनिश्चित करें आप की तरह कुछ है:

... ServiceHost Language="C#" Debug="true" 
    Service="Yourservice.yourservice" CodeBehind="yourservice.svc.cs" %> 

कहाँ Yourservice अपने नाम स्थान है और yourservice अपने .svc बनाया का नाम है।

4

मैं एक ही परिणाम था (Endpoint नहीं मिला) जब मैं ब्राउज़र विंडो

http://c143253-w7a:2221/ws/myService.svc 

में रखते फिर जब मैं विधि करने के लिए पूरे यूआरएल डाल दिया, यह ठीक भाग गया। इस

http://c143253-w7a:2221/ws/myService.svc/HelloWorld?theInput=pds 

मेरी .svc फ़ाइल में जैसे कि मैंने उपयोग कर रहा हूँ इस

Factory="System.ServiceModel.Activation.WebServiceHostFactory" 

मुझे लगता है कि फैक्टरी endpoint ऊपर स्पिन नहीं करता है जब तक यह आवश्यक है। यही कारण है कि हम एंड्रॉइंट को ब्राउजर (?) में नहीं मिला है।

इंटरफ़ेस कोड में विधि हस्ताक्षर कैसा दिखता है।

using System.ServiceModel.Web; 

[WebGet(UriTemplate = "HelloWorld?theInput={theInput}")] 
[OperationContract] 
string HelloWorld(string theInput); 

मैं webconfig में कुछ भी नहीं डाल दिया। वहां कुछ सामान है, लेकिन मुझे लगता है कि वीएस में आया, डब्ल्यूसीएफ सेवा टेम्पलेट जोड़ें। यह इस तरह दिखता है:

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 
यहाँ
संबंधित मुद्दे