2011-12-26 6 views
14

सामग्री सामग्री से मेल नहीं खाता है I.NET 4.0 में .NET 4.0 का उपयोग कर IIS 7.5 में WCF सेवा होस्ट कर रहा हूं। मेरे पास एक WPF एप्लिकेशन भी है जो मैं अपने क्लाइंट के रूप में उपयोग कर रहा हूं जिसे विजुअल स्टूडियो 2010 और .NET 4.0 के साथ बनाया गया था। मैंने अपना सेवा संदर्भ जोड़ा और जब मैं कोई फ़ंक्शन कॉल करने का प्रयास करता हूं, तो मुझे निम्न अपवादप्रतिक्रिया संदेश का डब्ल्यूसीएफ charset = utf-8 बाध्यकारी (अनुप्रयोग/साबुन + xml; charset = utf-8)

सामग्री प्रकार एप्लिकेशन/xml; charset = utf-8 प्रतिक्रिया संदेश बंधन की सामग्री प्रकार से मेल नहीं खाती (आवेदन/साबुन + xml; charset = utf-8)

मैं एक वेब ब्राउज़र में सेवा करने के लिए नेविगेट करने में सक्षम हूँ और मेरी बाइंडिंग क्लाइंट और सेवा (WSHttp बाइंडिंग) के बीच समान दिखाई देती है।

मुझे पता है कि इस त्रुटि के बारे में बहुत सारे Google परिणाम हैं लेकिन उनमें से कोई भी प्रासंगिक नहीं है/मेरी विशिष्ट समस्या में मदद करता है। मैंने गैर-HTTP सक्रियण सुविधाओं के साथ-साथ अन्य छोटी चालों की एक विस्तृत विविधता स्थापित करने का प्रयास किया। कोई भी मदद करने में सक्षम हो सकता है? धन्यवाद

संपादित करें, यहाँ मेरी कॉन्फ़िगरेशन (वे काफी लंबा हैं)

ग्राहक

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
     <basicHttpBinding> 
      <binding name="ContentSoap" 
       closeTimeout="00:01:00" openTimeout="00:01:00" 
       receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" 
       bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferSize="2147483647" maxBufferPoolSize="2147483647" 
       maxReceivedMessageSize="2147483647" 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" 
           maxArrayLength="2147483647" 
           maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
           realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 
      </binding> 
      <binding name="OrderSoap" 
       closeTimeout="00:01:00" openTimeout="00:01:00" 
       receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" 
       bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferSize="65536" maxBufferPoolSize="524288" 
       maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" 
          maxArrayLength="16384" maxBytesPerRead="4096" 
          maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
           realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 
      </binding> 
     </basicHttpBinding> 
     <netTcpBinding> 
      <binding name="NetTcpBindingEndpoint" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       transactionFlow="false" transferMode="Buffered" 
       transactionProtocol="OleTransactions" 
       hostNameComparisonMode="StrongWildcard" listenBacklog="10" 
       maxBufferPoolSize="2147000000" maxBufferSize="65536" maxConnections="10" 
       maxReceivedMessageSize="2147000000"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" 
        maxArrayLength="2147000000" maxBytesPerRead="4096" 
        maxNameTableCharCount="16384" /> 
       <reliableSession ordered="true" inactivityTimeout="00:01:00" 
           enabled="true" /> 
       <security mode="None"> 
       <transport clientCredentialType="Windows" 
          protectionLevel="EncryptAndSign" /> 
       <message clientCredentialType="Windows" /> 
       </security> 
      </binding> 
     </netTcpBinding> 
     <wsHttpBinding> 
      <binding name="WSHttpBinding_IInmateCanteenServiceWeb" 
       closeTimeout="00:01:00" openTimeout="00:01:00" 
       receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       bypassProxyOnLocal="false" transactionFlow="false" 
       hostNameComparisonMode="StrongWildcard" 
       maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
       messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
       allowCookies="false"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" 
        maxArrayLength="16384" maxBytesPerRead="4096" 
        maxNameTableCharCount="16384" /> 
       <reliableSession ordered="true" inactivityTimeout="00:10:00" 
        enabled="false" /> 
       <security mode="Transport"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
          realm="" /> 
       </security> 
      </binding> 
     </wsHttpBinding> 
    </bindings> 
    <client> 
     <endpoint name="ContentSoap" 
      address="http://media.team.twvending.net/storeservices/content.asmx" 
      binding="basicHttpBinding" bindingConfiguration="ContentSoap" 
      contract="MediaPortContent.ContentSoap" /> 
     <endpoint name="OrderSoap" 
      address="http://media.team.twvending.net/storeservices/order.asmx" 
      binding="basicHttpBinding" bindingConfiguration="OrderSoap" 
      contract="MediaPortOrder.OrderSoap" /> 
     <endpoint name="NetTcpBindingEndpoint" 
      address="..." 
      binding="netTcpBinding" bindingConfiguration="NetTcpBindingEndpoint" 
      contract="WebCallBack.ICallbackService" /> 
     <endpoint name="WSHttpBinding_IInmateCanteenServiceWeb" 
      address="..." 
      binding="wsHttpBinding" 
      bindingConfiguration="WSHttpBinding_IInmateCanteenServiceWeb" 
      contract="InmateCanteenWeb.IInmateCanteenServiceWeb" /> 
     <endpoint name="WSHttpBinding_ICommAccountingBinding" 
      address="..." 
      binding="wsHttpBinding" 
      bindingConfiguration="WSHttpBinding_IInmateCanteenServiceWeb" 
      contract="CommAccountingWeb.ICommAccountingWeb" /> 
    </client> 
</system.serviceModel> 

और सर्वर

<system.serviceModel> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="httpBehavior"> 
       <!--<webHttp />--> 
      </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
      <behavior name="ServiceBehavior"> 
       <serviceCredentials> 
        <clientCertificate> 
        <authentication revocationMode="NoCheck" /> 
        </clientCertificate> 
        <serviceCertificate findValue="CN=secure.inmatecanteen.com" /> 
       </serviceCredentials> 
       <serviceMetadata httpsGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
      <behavior name="MexBehavior"> 
       <serviceMetadata httpsGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
      <behavior name="HttpMexBehavior"> 
       <serviceMetadata httpsGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
      <behavior name="BasicHttpMexBehavior"> 
       <serviceMetadata httpGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
      <behavior name=""> 
       <serviceMetadata httpsGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
     </serviceBehaviors> 
     </behaviors> 
     <serviceHostingEnvironment aspNetCompatibilityEnabled="false" 
           multipleSiteBindingsEnabled="true" /> 
     <bindings> 
     <wsHttpBinding> 
      <binding name="myWsHttpBinding" maxBufferPoolSize="2147483647" 
       maxReceivedMessageSize="2147483647" messageEncoding="Text"> 
       <readerQuotas maxDepth="32" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647" /> 
       <security mode="Transport"> 
        <transport clientCredentialType="None" /> 
       </security> 
      </binding> 
     </wsHttpBinding> 
     <webHttpBinding> 
      <binding name="myWebHttpBinding"> 
       <security mode="Transport"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
          realm="" /> 
       </security> 
      </binding> 
     </webHttpBinding> 
     <basicHttpBinding> 
      <binding name="myBasicHttpBinding" maxBufferPoolSize="2147483647" 
       maxReceivedMessageSize="2147483647"> 
       <readerQuotas maxDepth="32" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
         maxNameTableCharCount="2147483647" /> 
      </binding> 
     </basicHttpBinding> 
    </bindings> 
    <services> 
     <service name="CommAccountingWeb.CommAccountingWeb" 
        behaviorConfiguration="HttpMexBehavior"> 
      <endpoint 
       address="" 
       behaviorConfiguration="httpBehavior" 
       binding="webHttpBinding" bindingConfiguration="myWebHttpBinding" 
       contract="CommAccountingWeb.ICommAccountingWeb" /> 
      <endpoint 
       address="mex" 
       binding="mexHttpsBinding" 
       contract="IMetadataExchange" /> 
      <host> 
       <baseAddresses> 
        <add baseAddress="..."></add> 
       </baseAddresses> 
      </host> 
     </service> 
     <service name="CommAccountingWeb.CommAccountingBasic" 
        behaviorConfiguration="BasicHttpMexBehavior"> 
      <endpoint 
       address="" 
       binding="basicHttpBinding" 
       bindingConfiguration="myBasicHttpBinding" 
       contract="CommAccountingWeb.ICommAccountingBasic" /> 
      <endpoint 
       address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" /> 
      <host> 
       <baseAddresses> 
        <add baseAddress="..." /> 
       </baseAddresses> 
      </host> 
     </service> 
    </services> 
</system.serviceModel> 
+0

ऐसा लगता है कि आपकी सेवा 'webHttp बाइंडिंग' के लिए कॉन्फ़िगर की गई है और इस प्रकार केवल एक्सएमएल लौट रही है, जबकि आपका क्लाइंट एसओएपी एक्सएमएल संदेश की अपेक्षा करता है .... क्या आप हमें सर्वर- और क्लाइंट-साइड कॉन्फ़िगरेशन दिखा सकते हैं ?? –

+0

मेरा संपादन देखें .... – tier1

+0

ठीक संपादन के लिए धन्यवाद - लेकिन आपके पास बहुत से सेवा अंतराल और क्लाइंट कनेक्टिंग हैं - ** कौन सा ** आप इस समस्या का उपयोग कर रहे हैं ?? आपका क्लाइंट-साइड कोड कैसा दिखता है, कि आप उन कार्यों में से किसी एक को कॉल करने के लिए उपयोग करने का प्रयास कर रहे हैं ?? –

उत्तर

18

मैं संदिग्ध के रूप में - अपने क्लाइंट साइड config इस तरह दिखता है :

<endpoint name="WSHttpBinding_ICommAccountingBinding" 
     address="https://secure.inmatecanteen.com/CommAccountingService/CommAccountingWeb.svc" 
     binding="wsHttpBinding" 
     bindingConfiguration="WSHttpBinding_IInmateCanteenServiceWeb" 
     contract="CommAccountingWeb.ICommAccountingWeb" /> 

यह wsHttpBinding उम्मीद - लेकिन सर्वर साइड पता यह से कनेक्ट कर रहा है:

<service name="CommAccountingWeb.CommAccountingWeb" 
      behaviorConfiguration="HttpMexBehavior"> 
    <endpoint 
     address="" 
     behaviorConfiguration="httpBehavior" 
     binding="webHttpBinding" bindingConfiguration="myWebHttpBinding" 
     contract="CommAccountingWeb.ICommAccountingWeb" /> 
    <host> 
     <baseAddresses> 
      <add baseAddress="https://secure.inmatecanteen.com/CommAccountingService/CommAccountingWeb.svc"></add> 
     </baseAddresses> 
    </host> 
</service> 

और इस सर्वर endpoint WebHttpBinding उपयोग करता है।

इसलिए जब ग्राहक एक सोप XML संदेश (सामग्री प्रकार: application/soap+xml; charset=utf-8) को उम्मीद है, सर्वर साइड endpoint एक बाकी endpoint जो सादा एक्सएमएल (सामग्री प्रकार: application/xml; charset=utf-8) रिटर्न है

समाधान: आप यह सुनिश्चित करने की आवश्यकता है कि क्लाइंट और दोनों सर्वर एंडपॉइंट का उपयोग बाइंडिंग और कॉन्फ़िगरेशन के संबंध में सिंक हो!

0

मुझे यह समस्या मिली जब मैंने एक ऐसी विधि जोड़ा जो बेस क्लास के उदाहरणों का संग्रह लौटा, जिसमें [KnownType] विशेषता नहीं थी जो एक ठोस उदाहरण को हल करेगी। जगह में [ज्ञात टाइप] विशेषता के साथ समस्या गायब हो गई।

[ServiceContract] 
public interface IService { 
    [OperationContract] 
    IEnumerable<ItemBase> GetItems(); 
} 

[DataContract] 
// [KnownType(typeof(RealItemA))] <--- without these attributes you will get a problem 
// [KnownType(typeof(RealItemB))] 
public class ItemBase { 
} 

[DataContract] 
public class RealItemA : ItemBase { 
} 

[DataContract] 
public class RealItemB : ITemBase { 
} 
0
मेरे मामले में

एक ही त्रुटि दी डेटा प्रकार में

[datacontract] 
[datamember] 

विशेषताएं गुम संपन्न हुई थी।

त्रुटि संदेश वास्तव में भ्रामक था।

3

मौजूदा सर्वर पक्ष वेब सेवा में से किसी एक को क्लाइंट सेवा बनाने के दौरान मुझे एक समान त्रुटि मिली। मैं क्लाइंट पर SOAP 1.1 परिवहन प्रोटोकॉल का उपयोग करके इसे सुधार सकता हूं। किसी भी तरह साबुन 1.2 एक अलग प्रारूप दे रहा/उम्मीद कर रहा है। यह BasicHttp बाइंडिंग बनाम WebHttp बाइंडिंग बनाम WsHttp बाइंडिंग के बीच अंतर पर वापस ट्रेस।

3

टिप्पणियों में से एक के रूप में this question, अपने ग्राहक के एंडपॉइंट पते पर ?wsdl जोड़ें, और आपको सेवा के साथ और अधिक भाग्य होना चाहिए। ?wsdl महत्वपूर्ण है - इसका मतलब है कि ब्राउज़र को सेवा के लिए "वेब सेवा विवरण भाषा" मिल रही है, और सेवा को कॉल नहीं कर रहा है।

मुझे एक ही समस्या थी और ?wsdl जोड़कर मेरे सिरदर्द को हल किया गया।

0

सुनिश्चित करें कि आपने सेवा संदर्भ के अतिरिक्त app.config में उत्पन्न बाइंडिंग, अनुबंध और अंतराल में परिवर्तन नहीं किए हैं।

संदेश जोड़ें .NET कोड में Mtom के रूप में एन्कोडिंग और फिर जांचें कि क्या आपको अभी भी संदेश मिलता है या नहीं।

मैं दोनों wshttpbinding और basichttpbinding और मुद्दों यहाँ का सामना करना पड़ा के लिए साबुन प्रोटोकॉल का उपयोग WCF सेवा के एक खपत बनाने समझा की कोशिश की है: http://www.writeulearn.com/consume-wcf-soap-service-csharp/ कृपया इसे माध्यम से जाने।

0

मुझे यह त्रुटि Syste.Web.MVC DLL के विभिन्न संस्करण के कारण है। आप दूसरे स्टैक ओवरफ़्लो प्रश्न में उत्तर Here का उत्तर दे सकते हैं।

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