在ASP.NET中拒绝用户时,’CustomIdentity’上的SerializationException

前端之家收集整理的这篇文章主要介绍了在ASP.NET中拒绝用户时,’CustomIdentity’上的SerializationException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试在现有数据库的基础上实现ASP.NET身份验证和授权.
我们有一个网站调用webservice来获取其数据.要使用Web服务,我需要提供用户名和密码.
知道这一点,我决定实施IIdentity和IPrincipal来存储加密的密码,并能够在执行webservice调用时提供它.
在将来,我们可能希望使用更多asp.net的内置安全性,因此我实现了成员资格和角色提供程序,并覆盖了我需要的内容(ValidateUser和GetRoles)
但是,在通过成员资格提供程序实现验证用户之后,我仍然将自己的CustomIdentity设置为Context.User,以便能够在需要时检索其密码.

只要允许用户访问该页面,它就能完美运行.但是当用户被拒绝时,框架会在我的CustomIdentity上抛出序列化异常,而不是抛出AccessDeniedException.
我找到了perfectly similar behaviour with more details described on this link,但没有回复.

我的例外情况与上面的链接完全相同


Type is not resolved for member'CW.CustomAuthentication.CWIdentity,CW.CustomAuthentication,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 'CW.CustomAuthentication.CWIdentity,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 'CW.CustomAuthentication.CWIdentity,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

同时使用会员资格和自定义IIdentity和IPrincipal是否正确?
如果不是,如果我使用成员资格和角色提供者,在哪里添加密码或其他用户数据等属性

最好的祝福,

Stephane Erbrech

解决方法

经过一些更多的测试,根据我发布的链接说,似乎只有当我从visual studio运行调试模式时才会发生此错误.如果我将项目设置为在IIS中运行,则错误消失,安全实现按预期工作.

—这是Visual Studio中实现的轻量级网络服务器中的一个错误吗?—

编辑:您可以进入Web项目的属性,转到“Web”选项卡,然后选中“使用本地@R_403_160@”.但是,这将要求您以管理员身份运行Visual Studio并在计算机上安装IIS,以便VS在加载项目时可以在本地@R_403_160@中创建虚拟目录.

猜你在找的asp.Net相关文章