2016-12-23 87 views
0

我想開發一個接收SOAP請求並返回SOAP響應的Web服務。我不知道該怎麼做。我只使用以下代碼來交換消息。誰能幫我把我的服務正常使用WCF交換SOAP消息

IService.cs

[OperationContract(Name = "Receive")] 
    [WebInvoke(Method = "POST", UriTemplate = "Receive")] 
    string Receive(Stream odata); 

Service.cs

public string Receive(Stream data) 
    { 
    string [email protected]"<SOAP-ENV:Envelope xmlns:SOAP-ENV=""http://schemas.xmlsoap.org/soap/envelope/"" 
    xmlns:SOAP-ENC=""http://schemas.xmlsoap.org/soap/encoding/"" xmlns:xsi=""http:/ 
    /www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/ 
    XMLSchema""> 
     <SOAP-ENV:Body> 
      <m:Execute xmlns:m=""http://tempuri.org/""> 
       <m:name>name1</m:name> 
       <m:Value></m:Value> 
      </m:Execute> 
     </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope>"; 
    return response; 
} 

這裏是web.config中的一部分

<system.serviceModel> 
    <services> 
     <service name="Service" behaviorConfiguration="myServiceBehavior"> 
     <endpoint name="webHttpBinding" address="" binding="webHttpBinding" contract="IService" behaviorConfiguration="webHttp"/> 
     <endpoint name="mexHttpBinding" address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="myServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="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="webHttp"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <protocolMapping> 
     <add binding="basicHttpsBinding" scheme="https"/> 
    </protocolMapping> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/> 
    </system.serviceModel> 

回答

0

我終於解決了這個問題。我需要讓我的服務支持WSE的特殊配置