![](/img/trans.png)
[英]ASP.NET 4.7 Forms Authentication Failure, Ticket supplied was invalid
[英].NET 2.0 Web App Authentication Failing: “The ticket supplied was invalid”
我有一個.NET 4.0應用程序,其中一個2.0應用程序是一個子級。 Web應用程序不在多服務器環境中。 僅一台服務器參與處理這些請求。 兩個應用程序都使用自定義身份驗證,並且兩個應用程序都具有相同的machineKey
屬性和值。 當我訪問2.0應用程序時,事件日志顯示以下消息:
Event code: 4005
Event message: Forms authentication failed for the request. Reason: The ticket supplied was invalid.
Event time: 12/2/2011 11:36:49 AM
Event time (UTC): 12/2/2011 5:36:49 PM
Event ID: 2068ad6957964f75885301fc2b58ddfe
Event sequence: 2
Event occurrence: 1
Event detail code: 50201
我嘗試在Web.config的forms元素ticketCompatibilityMode
屬性設置為Framework20,但這並不能解決問題。 由於存在此錯誤,因此未授權用戶,因此,常規對象(HttpContext)不會填充用戶信息。
有誰知道如何解決此錯誤,以便身份驗證適用於2.0應用程序? (順便說一句,我確實計划將2.0應用程序升級到4.0,但目前尚無法完成)
如果有人遇到同樣的問題,我可以通過在.NET 2.0應用程序的Web.config的<appSettings>
部分中添加一些條目來解決此錯誤。 添加的條目是:
<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />
編輯(2012-05-04) :在服務器上安裝安全公告MS11-100之后,2.0應用程序上的身份驗證再次中斷。 將以下內容添加到4.0應用程序的Web.config中可解決此問題:
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
您必須在2個應用程序上具有相同的框架。
httpRuntime targetFramework =“ 4.5”
出於將信息移植到上一篇文章的目的,它對我有用,並將此密鑰添加到APP (均為4.0)web.config中:
<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
此問題還有另一個原因。 即使在同一台計算機上,如果您的應用程序之一具有相同的IIS和相同的.NET框架,
<httpRuntime requestValidationMode="2.0" />
則共享身份驗證Cookie無效。
刪除requestValidationMode
可解決此問題。 但是有時您無法做到,它需要待在那兒。 我還沒有發現在這種情況下該怎么辦
我遇到過同樣的問題。 在我的情況下,我在同一台服務器上有兩個不同的應用程序,並且兩個的name屬性都相同。
解決方案是為每個應用程序使用唯一的名稱。 在此處查看模式詳細信息https://msdn.microsoft.com/zh-cn/library/1d3t3c61(v=vs.85).aspx
它是cookie名稱,如果您使用相同的名稱,則cookie被覆蓋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.