簡體   English   中英

無法將類型為“ System.Web.Hosting.SimpleWorkerRequest”的對象轉換為類型為“ System.Web.Hosting.IIS7WorkerRequest”的對象

[英]Unable to cast object of type 'System.Web.Hosting.SimpleWorkerRequest' to type 'System.Web.Hosting.IIS7WorkerRequest'

我將解決方案從VS2010遷移到VS2013之后,我收到了InvalidCastException。

在VS2010中,一切正常,在VS2013中,相同的代碼給出以下錯誤:

System.Web.dll中發生類型'System.InvalidCastException'的異常,但未在用戶代碼中處理

其他信息:無法將類型為“ System.Web.Hosting.SimpleWorkerRequest”的對象轉換為類型為“ System.Web.Hosting.IIS7WorkerRequest”的對象。

我不知道該怎么辦,在互聯網上找不到任何相關內容。

在以下代碼段的第5行出現錯誤:

public static void AuthenticateUser(String UserName, Int32 Minutes = 30, Boolean IsPersistent = true)
    {
        FormsAuthenticationTicket _ticket = new FormsAuthenticationTicket(1, UserName, DateTime.Now, DateTime.Now.AddMinutes(Minutes), IsPersistent, String.Empty);
        FormsIdentity _id = new FormsIdentity(_ticket);
        var _roles = Roles.GetRolesForUser(UserName);
        HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(_id, _roles);
    }

從技術上講,這不是答案。 但這幫助我解決了問題。 因此,我正在與大家分享這一點,希望這將在不久的將來防止某些人感到頭疼。

在Visual Studio 2010 Professional中,我正在使用Visual Studio Development Server通過特定端口(4302)運行我的項目。

在Visual Studio 2013社區版中,我在IIS Express上運行我的項目。 由於某些原因,我仍然不知道為什么,這導致我的軟件將“ IIS7WorkerRequest”轉換為“ SimpleWorkerRequest”對象。

在使用自定義虛擬目錄切換到本地IIS服務器后,我的錯誤消失了。 如果有人可以解釋這一點,我很想知道為什么會這樣。 但是現在這解決了上面的問題。

您不能從同級類轉換為另一同級。 您可以從父對象投射到孩子,或從孩子投射到父母,但不能在兄弟姐妹之間投射。

https://msdn.microsoft.com/en-us/library/ms173105.aspx

由於SimpleWorkerRequest和IIS7WorkerRequest都繼承自HttpWorkerRequest,因此無法在它們之間進行強制轉換。 我首先要問自己為什么想要或認為必須執行此轉換,如果找不到替代方法,請編寫一種轉換方法以在它們之間進行映射。 但是,這通常是一個好兆頭,說明您走錯了代碼的正確路徑。

暫無
暫無

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

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