2009-03-02 12 views
5

मुझे डब्लूसीएफ सेवा क्लाइंट के साथ डब्ल्यूसीएफ टेस्ट क्लाइंट का उपयोग करने का प्रयास करते समय त्रुटि मिल रही है। यहाँ सेवा कोड है:डब्ल्यूसीएफ टेस्ट क्लाइंट त्रुटि: सेवा को आमंत्रित करने में विफल

में विफल:

[ServiceContract] 
public interface IEmployeeService 
{ 
    [OperationContract(Name = "GetEmployee")] 
    [WebGet(RequestFormat = WebMessageFormat.Xml, 
     UriTemplate = "/Employees/{employeeNumber}")] 
    Employee GetEmployee(string employeeNumber); 
} 

public Employee GetEmployee(string employeeNumber) 
{ 
    var employeeNumberValue = Convert.ToInt32(employeeNumber); 
    var employee = DataProvider.GetEmployee(employeeNumberValue); 
    return employee; 
} 

<system.serviceModel> 
    <services> 
     <service name="Employees.Services.EmployeeService" 
       behaviorConfiguration="metaBehavior"> 
      <endpoint address="" 
         behaviorConfiguration="webHttp" 
         binding="webHttpBinding" 
         contract="Employees.Services.IEmployeeService"> 
      </endpoint> 
      <endpoint address="mex" 
         binding="mexHttpBinding" 
         contract="IMetadataExchange"> 
      </endpoint> 
     </service> 
    </services> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="webHttp"> 
       <webHttp/> 
      </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
      <behavior name="metaBehavior"> 
       <serviceMetadata httpGetEnabled="true" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

मैं WCF टेस्ट क्लाइंट के प्रयोग द्वारा सेवा से कनेक्ट करने में सक्षम हूँ, लेकिन जब मैं GetEmployee (employeeNumber) को लागू करने की मैं निम्नलिखित त्रुटि मिलती है कोशिश सेवा का आह्वान करें। संभावित कारण: सेवा ऑफ़लाइन या पहुंच योग्य नहीं है; क्लाइंट-साइड कॉन्फ़िगरेशन प्रॉक्सी से मेल नहीं खाता है; मौजूदा प्रॉक्सी अमान्य है। अधिक जानकारी के लिए स्टैक ट्रेस का संदर्भ लें। आप एक नई प्रॉक्सी शुरू करके, डिफ़ॉल्ट कॉन्फ़िगरेशन में पुनर्स्थापित करने, या सेवा को रीफ्रेश करके पुनर्प्राप्त करने का प्रयास कर सकते हैं।

मैं ब्राउज़र से अनुरोध भेजकर सफलतापूर्वक इस सेवा को कॉल करने में सक्षम था।

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

उत्तर

11

कृपया मेरे पिछले उत्तर को अनदेखा करें। मुझे नहीं लगता कि समस्या क्लाइंट-साइड कॉन्फ़िगरेशन पर है।

WCF Test Client and WebHttpBinding देखें।

This is a limitation of the web programming model itself. Unlike SOAP endpoints (i.e., those with BasicHttpBinding, WSHttpBinding, etc) which have a way to expose metadata about itself (WSDL or Mex) with information about all the operations/ parameters in the endpoint, there's currently no standard way to expose metadata for a non-SOAP endpoint - and that's exactly what the webHttpBinding-based endpoints are. In short, the WCF Test Client won't be useful for web-based endpoints. If some standard for representing web-style endpoints emerges when WCF ships its next version, we'll likely update the test client to support it, but for now there's none widely adopted.

+0

@ stimpy77, मैंने बस एमएस कर्मचारी द्वारा लिंक्ड उत्तर से उद्धृत किया। डब्ल्यूसीएफ में, बाध्यकारी को [WebHttp बाइंडिंग] कहा जाता है (http://msdn.microsoft.com/en-us/library/system.servicemodel.webhttpbinding.aspx) और डब्ल्यूएसडीएल 2 में, इसे [HTTP बाध्यकारी] कहा जाता है (http://www.w3.org/TR/wsdl20-adjuncts/#http- बाइंडिंग), लेकिन यह संदर्भ से पर्याप्त स्पष्ट है कि "वेब-आधारित" का अर्थ यहां क्या है। आरईएसटी शब्द एचटीटीपी के माध्यम से तरीकों को उजागर करने से परे है। यह संसाधनों के रूप में चीजों का इलाज करने और HTTP क्रियाओं आदि का उपयोग करने के बारे में है। [रिचर्डसन परिपक्वता मॉडल] देखें (http://martinfowler.com/articles/richardsonMaturityModel.html)। –

0

मुझे लगता है कि आपके config गलत है, आप नोड सुरक्षा मोड = "कोई नहीं" जोड़ना चाहिए और विशेषता bindingConfiguration = "NoneSecurity"

मेरी config के रूप में बदलें, फिर से कोशिश:

<system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="NoneSecurity" 
      maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" useDefaultWebProxy="false"> 
      <readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/> 
      <security mode="None"/> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="Elong.GlobalHotel.Host.IHotelAPIBehavior" 
     name="Elong.GlobalHotel.Host.IHotelAPI"> 
     <endpoint address="" binding="wsHttpBinding" bindingConfiguration="NoneSecurity" contract="Elong.GlobalHotel.Host.IIHotelAPI"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Elong.GlobalHotel.Host.IHotelAPIBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
0
I had a similar problem, the solution was in a minor error in the message alias ... that very generic message ... in our case was assigned a Boolean false if the right is true. 
    This value was in the MDM application that was running on websphere. 

मेरे मामले में पथ:

/opt/infamdm/hub/server/resources/cmxserver.properties 
    /opt/infamdm/hub/cleanse/resources/cmxcleanse.properties