我一直在关注有关如何使用.net实现自定义基本身份验证的文章。

这是article

该代码使用从IIdentity派生的接口-IBasicUser。
类BasicUser实现IBasicUser。
创建BasicUser的实例,并从中构造GenericPrincipal。

IBasicUser bu = new BasicUser();
context.Context.User = new GenericPrincipal(bu, new string[] { });


当我运行代码时,出现异常。

Type 'Smithfamily.Blog.Samples.BasicUser' in assembly 'LM_TESTS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.


因此,我看了看Reflector中的System.Security.Principal.GenericIdentity类,发现它确实标记有[Serializable。 ComVisible(true)]

关于IIdentity的Documentation没有说明需要序列化的实现。但是从异常和反射器中我认为确实如此。因此,我将[Serializable]属性添加到BasicUser类。

现在,当我运行代码时,我得到了一个新的异常。

[SerializationException: Type is not resolved for member 'Smithfamily.Blog.Samples.BasicUser,LM_TESTS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.]


我对序列化不是很熟悉,也不太了解发生了什么或问题是什么。请您能帮助启发我。谢谢。

最佳答案

您是否将网站托管在VS Web开发服务器中?如果是这样,看起来您偶然发现了MS Connect中记录的错误...

http://connect.microsoft.com/VisualStudio/feedback/details/274696/using-custom-identities-in-asp-net-fails-when-using-the-asp-net-developement-server

如果我正确阅读了此文章以及其他有关它的文章,则此修复程序是GACing您的DLL,以便可以通过.NET探测正确找到它并在运行时加载。

09-12 08:55