2010-04-15 22 views
1

我在同一個項目中同時使用了wcf和asp.net項目。 (我在Azure上運行,所以這樣更方便)。無法使FormsAuthentication與WCF一起正常工作

我有這個設置在web.config:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
</system.serviceModel> 

我的WCF服務裝飾有:

[AspNetCompatibilityRequirements(
    RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 

隨着設置的屬性,不應該HttpContext.Current.User是當我在我的wcf服務中運行方法時自動爲我設置?目前,HttpContext.Current.User爲空,並且不會自動爲我設置。

我想如果我使用了aspNetCompatibilityEnabled,那麼Application_AuthenticationRequest方法會在執行wcf方法時在Global.asax中觸發,但事實並非如此。

.aspxauth cookie正在正確傳遞給wcf服務,並且我能夠手動解密該cookie並設置當前用戶。

爲什麼這不按我期望的方式工作的建議?

+0

歡迎來到StackOverflow!希望你能在這裏找到你的答案。快速介紹:如果您發佈代碼片段或XML /配置文件內容,則應始終突出顯示這些行,然後按編輯器工具欄上的「代碼」按鈕(101 010)以良好地格式化它們,並獲得語法突出顯示。這讓世界變得不同! – 2010-04-15 16:14:07

回答

0

你在

ServiceSecurityContext.Current.PrimaryIdentity 

字段,它可以在您的服務器方法的代碼中得到預期的用戶身份?它應該是IIdentity後代的某種形式,如果可以的話,會給你用戶信息。

+0

'System.ServiceModel.ServiceSecurityContext.Current'爲空 – 2010-04-15 16:56:06

+0

好的,所以你沒有正式驗證WCF服務......你能告訴我們服務器和客戶端配置爲你的綁定嗎?你使用什麼樣的WCF安全? – 2010-04-15 17:04:30

+0

好的。我發現我的問題是什麼,但我不知道如何解決它。我正在使用一個簡單的HttpModule(它執行重寫路徑)來清除服務名稱末尾的.svc。因此,Application_AuthenticateRequest不會觸發,顯然HttpContext.Current.User也不會被設置。建議? – 2010-04-16 03:41:17

相關問題