2011-10-19 66 views
0

我試圖訪問公司網絡上的WCF服務。我正在使用由svcutil生成的代理和配置文件。代碼如下所示:只是另一個「現有連接被遠程主機強行關閉」問題

using (Client client = new Client()) 
{ 
    client.Open(); 
    client.DoStuff(); 
} 

客戶端是在生成的代理代碼的客戶端類,這意味着它是從System.ServiceModel.ClientBase派生並實現了合同接口。

而且配置文件看起來是這樣的:

<configuration> 
    <system.serviceModel> 
     <client> 
      <endpoint address="net.tcp://Address" 
         binding="netTcpBinding" 
         bindingConfiguration="Config" 
         contract="Namespace.Contract" 
         name="name"> 
       <identity> 
        <servicePrincipalName value="Host" /> 
       </identity> 
      </endpoint> 
     </client> 
     <bindings> 
      <netTcpBinding> 
       <binding name="Config" 
         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="524288" 
         maxBufferSize="65536" 
         maxConnections="10" 
         maxReceivedMessageSize="65536"> 
        <readerQuotas maxDepth="32" 
            maxStringContentLength="8192" 
            maxArrayLength="16384" 
            maxBytesPerRead="4096" 
            maxNameTableCharCount="16384" /> 
        <reliableSession ordered="true" 
            inactivityTimeout="00:10:00" 
            enabled="false" /> 
        <security mode="None"> 
         <transport clientCredentialType="None" /> 
        </security> 
       </binding> 
      </netTcpBinding> 
     </bindings> 
    </system.serviceModel> 
</configuration> 

我得到的異常每次代碼達到client.Open時間「現有的連接被強行關閉遠程主機」()。真正麻煩的是,當我從另一臺電腦上試用它時,並沒有例外。而最重要的是,使用的配置文件有交通運輸的安全性,其變更爲無,並在它的工作原理仍然是計算機有而第一個機器上

<security mode="Transport"> 
    <transport clientCredentialType="Windows" 
       protectionLevel="EncryptAndSign" /> 
    <message clientCredentialType="Windows" /> 
</security> 

舊的配置文件和服務器這是

<security mode="None"> 
    <transport clientCredentialType="None" /> 
</security> 

這是什麼原因造成的?關於這個例外,我已經閱讀了許多其他問題,但沒有一個看起來像我的問題。

已解決!我已將安全選項設置在錯誤的地方。 該服務由ServiceHost自行託管,且Security屬性未設置,因此它默認爲None以外的其他值。

回答

1

檢查您的IIS上的此項目的安全設置(您正在使用IIS?)。我認爲它仍然說認證類型Windows。

+0

謝謝,我託管它與ServiceHost,而不是IIS,但我的問題是類似的。 – ggPeti

相關問題