2012-05-24 25 views
5

我正在嘗試在我的wcf項目中使用TransportWithMessageCredentials和https。我已經設置了客戶端和服務器安全模式=「TransportWithMessageCredential」和clientCredentialType =「Windows」。CredentialCache.DefaultNetworkCredentials在使用TransportWithMessageCredential時爲空

當我從CredentialCache.DefaultNetworkCredentials獲取憑據時,用戶名,密碼和域都是空的。

爲什麼這些會是空的任何理由?如果他們永遠是空的,我會在哪裏獲得憑據通過?

如何將登錄的用戶憑據傳遞給服務而不提示他們進行登錄?

客戶端結合

<basicHttpBinding> 
    <binding name="ClientHttpEndpoint" closeTimeout="00:01:00" 
    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:02:00" 
    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
    maxBufferSize="4194304" maxBufferPoolSize="524288" maxReceivedMessageSize="4194304" 
    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
    useDefaultWebProxy="true"> 
     <security mode="TransportWithMessageCredential"> 
      <transport clientCredentialType="Windows" proxyCredentialType="None" realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
</basicHttpBinding> 

服務器結合

<basicHttpBinding> 
    <binding name="WindowsTransportCredentialBinding" maxBufferSize="524288"maxReceivedMessageSize="524288"> 
     <readerQuotas maxDepth="128" maxStringContentLength="1048576" /> 
     <security mode="TransportWithMessageCredential"> 
      <transport clientCredentialType="Windows" /> 
     </security> 
    </binding> 
</basicHttpBinding> 

... 

<service name="Test.DiagnosticService"> 
    <endpoint binding="basicHttpBinding" bindingConfiguration="WindowsTransportCredentialBinding" name="ClientDiagnosticEndpoint" contract="Test.IDiagnostic" /> 
</service> 

代碼來設置用戶名和密碼

ChannelFactory<IDiagnostic> test = new ChannelFactory<IDiagnostic>(DIAGNOSTIC_ENDPOINT_NAME); 
test.Credentials.UserName.UserName = "TestUser"; 
test.Credentials.UserName.Password = "User"; 
return test.CreateChannel(); 
+0

您是否問過如何將當前登錄到Windows的用戶傳遞給該服務? – Jeremy

+0

是的。我想將當前登錄的用戶憑據(窗口)傳遞給服務。 (我編輯了原始文章) – user851974

+0

是在IIS中託管的服務?或自己託管 – EdmundYeung99

回答

相關問題