2013-08-05 23 views
3

我有簡單的WCF(.NET 3.5)服務應用程序,它具有由VS 2008創建的默認代碼,當我打開一個新項目時。WCF wshttpbinding(SOAP 1.2)不適用於SoapUI工具

我在web.config文件中使用了以下配置的wshttpbinding。

<system.serviceModel> 
    <services> 
     <service name="WCFTestServiceApp.Service1" behaviorConfiguration="WCFTestServiceApp.Service1Behavior"> 
     <!-- Service Endpoints --> 
     <endpoint address="" binding="wsHttpBinding" contract="WCFTestServiceApp.IService1" bindingConfiguration="binding1"> 
      <!-- 
       Upon deployment, the following identity element should be removed or replaced to reflect the 
       identity under which the deployed service runs. If removed, WCF will infer an appropriate identity 
       automatically. 
      --> 
      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="binding1">   
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="WCFTestServiceApp.Service1Behavior"> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="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="true"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

我遇到這個WCF應用程序,並能使用VS 2008 WCFTESTCLIENT發送和收到的郵件。 我不能用SoapUI工具做同樣的事情。當我切換到basichttpBinding它似乎工作作爲其SOAP 1.1版本。但是wsHttpBinding(SOAP 1.2)似乎不起作用。

以下是我在SoapUI工具中收到的請求和響應消息。

請求

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"> 
    <soap:Header/> 
    <soap:Body> 
     <tem:GetData> 
     <!--Optional:--> 
     <!--type: int--> 
     <tem:value>3</tem:value> 
     </tem:GetData> 
    </soap:Body> 
</soap:Envelope> 

響應

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> 
    <s:Header> 
     <a:Action s:mustUnderstand="1">http://www.w3.org/2005/08/addressing/soap/fault</a:Action> 
    </s:Header> 
    <s:Body> 
     <s:Fault> 
     <s:Code> 
      <s:Value>s:Sender</s:Value> 
      <s:Subcode> 
       <s:Value xmlns:a="http://schemas.xmlsoap.org/ws/2005/02/sc">a:BadContextToken</s:Value> 
      </s:Subcode> 
     </s:Code> 
     <s:Reason> 
      <s:Text xml:lang="en-IN">The message could not be processed. This is most likely because the action 'http://tempuri.org/IService1/GetData' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.</s:Text> 
     </s:Reason> 
     </s:Fault> 
    </s:Body> 
</s:Envelope> 

請指點我應該如何進行。任何幫助表示讚賞。

+0

在<端點地址= 「」 綁定= 「的wsHttpBinding」 合同= 「WCFTestServiceApp.IService1替換basicHttpBinding的的wsHttpBinding」 bindingConfiguration =」 binding1" > – YOusaFZai

回答

0

是因爲wsHttpBinding默認集成了安全性。在WCF 嘗試此禁用安全:

WEB.CONFIG

<wsHttpBinding> 
    <binding name="binding1"> 
     <security mode="None"> 
     <transport clientCredentialType="None" /> 
     <message establishSecurityContext="false" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 
相關問題