无法转换类型为#System; Security.Principal.WindowsIdentity'的对象到自定义类

时间:2015-03-09 21:08:17

标签: c# asp.net visual-studio-2010 visual-studio

在使用WebForms在VS2013中使用C#for ASP .net 4进行开发时,我正在实现一个已经在我所有应用程序中使用的自定义安全对象。随着从VS2010升级到VS2013,我遇到了这个错误,这让我很烦恼....

  

无法投射类型的对象   ' System.Security.Principal.WindowsIdentity'输入   ' CustomSecurity.BusinessObject.EmployeeIdentity'

代码位置如下:

public partial class _Default : System.Web.UI.Page  
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //This is where it fails 
        EmployeeIdentity employeeIdentity = (EmployeeIdentity)HttpContext.Current.User.Identity;
    } 
}

这行代码在VS2010中有效,但在VS2013中无效。代码编译但在运行时给出了这个错误。

到目前为止我尝试过的事情:

  1. 将CustomSecurity.BusinessObject.EmployeeIdentity转换为.net 4程序集
  2. 更改了代码以使用Page.User,我仍然得到相同的错误
  3. 阅读StackOverflow中的其他帖子,没有找到答案的好运....
  4. 我的问题: 有哪些其他建议可以解决我的问题?

1 个答案:

答案 0 :(得分:0)

因此,从将代码从VS2010转换为VS2013,我需要的更改是将以下内容添加到Web.config中:

<system.webServer>
    <modules>
        <!-- Add a Custom Authentication module  THIS NEEDS TO BE ADDED FOR IIS8 + .NET 4 -->
        <add name="DHAAuthenticationModule" type=" DHA.CustomSecurity.BusinessObject.DHAAuthenticationModule, DHA.CustomSecurity.BusinessObject"/>
    </modules>
</system.webServer>

我假设的原因是webServer也需要了解对象定义.... 这修复了我遇到的错误。我猜这是非常具体的。

对此有何想法?