zoukankan      html  css  js  c++  java
  • ASP.NET 中使用WebServer进行调试时,自定义的Identity出现 SerializationException的解决方法

    今天遇到一个奇怪的问题,虽然已经解决了,但是原因仍然不是很清楚。

    在新建的一个ASP.NET MVC中使用了自定义的Identity,在使用VS自带的WebServer调试时,发生了类似如下错误:

    Type is not resolved for member'XAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
    
    Exception Details: System.Runtime.Serialization.SerializationException: Type is not resolved for member 'XAssembly.MyIdentity,XAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
    
    Source Error:
    
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
    
    Stack Trace:
    
    [SerializationException: Type is not resolved for member 'XAssembly.MyIdentity,XAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.]
       Microsoft.VisualStudio.WebHost.Connection.get_RemoteIP() +0
       Microsoft.VisualStudio.WebHost.Request.GetRemoteAddress() +65
       System.Web.HttpRequest.get_UserHostAddress() +18
       System.Web.HttpRequest.get_IsLocal() +13
       System.Web.Configuration.CustomErrorsSection.CustomErrorsEnabled(HttpRequest request) +86
       System.Web.HttpContext.get_IsCustomErrorEnabled() +42
       System.Web.Configuration.UrlAuthFailedErrorFormatter.GetErrorText(HttpContext context) +16
       System.Web.Security.UrlAuthorizationModule.WriteErrorMessage(HttpContext context) +29
       System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) +8777783
       System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
       System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
    

    同样的代码,在使用IIS或IIS Express进行调试或运行时,就不会出错。

    最初尝试根据提示添加Attribute [Serializable]但是错误依旧。

    后来将原来Identity的定义由

    public class MyIdentity : IIdentity{
    //...
    }

    改为

    public class MyIdentity : MarshalByRefObject ,IIdentity{
    //...
    }

    即解决,但是最终发生原因还是没有探明,从异常上看来,似乎是WebServer内部的一个Bug。

    References:

    http://stackoverflow.com/questions/1277371/serializationexception-on-customidentity-when-user-is-denied-in-asp-net

  • 相关阅读:
    “增绿”——气候变化减排之外中国提出新方法
    当资本遇见万科章程
    [转]最简单实现跨域的方法:用 Nginx 反向代理
    活在雾霾下
    为石墨烯弄套产业政策?且慢!
    2016年的A股变数:IPO重启、注册制与国企改革
    被指“造假” 京东喊冤 到底谁在卖“真褚橙”?
    在管理教练与管理之间寻找平衡
    聪明的CEO如何将战略付诸执行
    苹果公司如何推动整个产业的前进
  • 原文地址:https://www.cnblogs.com/chsword/p/2745038.html
Copyright © 2011-2022 走看看