使用WCF交换SOAP消息

时间:2016-12-23 00:47:44

标签: c# .net web-services wcf soap

我想开发一个接收SOAP请求并返回SOAP响应的Web服务。我不知道该怎么做。我目前只使用以下代码来交换消息。任何人都可以帮我正确设置我的服务

IService.cs

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

Service.cs

  public string Receive(Stream data)
    {
    string response=@"<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>

1 个答案:

答案 0 :(得分:0)

我终于解决了这个问题。我需要通过其特殊配置

来支持WSE