2016-12-23 65 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的特殊配置