簡體   English   中英

安裝.NET Framework 4.5后,HttpContext.Current.User為null

[英]HttpContext.Current.User is null after installing .NET Framework 4.5

我使用的是.NET 4.0 VS10。 我有使用表單身份驗證的WCF服務。 我升級到VS11,.NET 4.5。

現在我的HttpContext.Current.User在wcf請求中為null。 我從登錄中注入了一個cookie給這個請求。

HttpRequestMessageProperty httpRequest;
...
httpRequest.Headers.Add(HttpRequestHeader.Cookie, cookie);

任何想法如何讓它再次工作?

已經有了

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

[AspNetCompatibilityRequirements(RequirementsMode = spNetCompatibilityRequirementsMode.Required)]

如果您在Oneway中遇到此問題(標記為[OperationContract(IsOneWay = true)]的操作)WCF操作合同,這就是問題的原因。 HttpContext是一個asp.net構造。 在成功調用單向操作之后,服務模型將202(已接受)回復發送回客戶端。

  • 在4.5中,asp.net清除了HttpContext,因為響應已經被發送回客戶端,這是設計的。
  • 在4.0中,這只是一個幸福的巧合,這個不受支持的場景有效。

由於我們在此發現了一些客戶報告,因此在.net 4.5.1更新中進行了一個怪異的修復。 要提供有關修復的更多詳細信息:

  1. 如果您的項目仍然以4.0為目標並且您在4.5.1計算機上運行應用程序,那么您的問題將得到解決(內部檢查目標框架版本)。
  2. 如果您的項目重新定位到4.5,那么Httpcontext.Current.User將再次變為null,原因如上所述。 嘗試使用OperationContext.Current.ServiceSecurityContext.WindowsIdentity來獲取用戶身份而不是HttpContext.Current.User屬性。 此屬性與主機無關,並在客戶端通過身份驗證時填充。

還有一個類似的問題的解決方案在這里

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

到您的配置文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM