我已啓用ASP.Net身份驗證服務,正如msdn所建議的那樣。然後,我嘗試通過控制檯應用程序或winforms應用程序使用該服務(通過向本地WCF服務添加服務引用)。我正在進行自定義身份驗證和傳輸安全性(所以我正在處理Global.asax
中的AuthenticationService.Authenticating
事件,它工作正常)。WCF身份驗證服務代理 - CookieContainer不可用
身份驗證本身工作正常,但通過添加服務引用創建的代理不包括CookieContainer
屬性。當我嘗試將Cookie令牌傳遞給需要驗證的後續服務時,這顯然是一個問題。
此外,在下面的客戶端代碼中,IsLoggedIn()
返回false,我猜這與沒有cookie容器存在有關。
ServiceReference1.AuthenticationServiceClient client =
new ServiceReference1.AuthenticationServiceClient();
bool isLoggedIn = client.Login("test", "test", "", true); //returns TRUE
bool check = client.IsLoggedIn(); //returns FALSE
這是我在web.config中服務:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true"
requireSSL = "false"/>
</webServices>
</scripting>
</system.web.extensions>
<system.serviceModel>
<services>
<service name="System.Web.ApplicationServices.AuthenticationService"
behaviorConfiguration="AuthenticationServiceTypeBehaviors">
<endpoint contract="System.Web.ApplicationServices.AuthenticationService"
binding="basicHttpBinding"
bindingConfiguration="userHttps"
bindingNamespace="http://asp.net/ApplicationServices/v200"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="userHttps" allowCookies="true">
<!--<security mode="Transport" />-->
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="AuthenticationServiceTypeBehaviors">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>
</configuration>
編輯:別的東西我要補充,我做的服務調用Login
方法的Fiddler會話,且Cookie是設置併發送回客戶端。但是,我應該怎麼做沒有CookieContainer?
你看這個:http://stackoverflow.com/questions/1777221/using-cookiecontainer-with-webclient-class? – 2012-07-09 21:05:58
該帖子不適用於我的問題。不過謝謝你的想法。 – EkoostikMartin 2012-07-09 21:08:10