2011-04-29 60 views
0

我已经实现了我自己的自定义角色管理器对象。当我使用Visual Studio版本的IIS运行我的Web应用程序时,它工作正常。我可以看到用户名,我可以钻入角色管理器类,看看它在做什么。当我使用IIS 7调试应用程序时,HttpContext.Current.User.Identity.Name为空,并且在确定我的用户具有哪些角色时,它不使用我的Role Manager类。我检查过我的所有dll都在bin目录中。使用Visual Studio 2010的ASP.NET MVC 2.通过web.config更改角色管理器

我猜测问题出在IIS 7上。我需要在IIS 7上进行配置以使其工作并使其用于角色管理器?

以下是设置角色管理器的web.config片段。

<membership> 
    <providers> 
    <clear /> 
    </providers> 
</membership> 
<roleManager defaultProvider="HyperionRoleProvider" enabled="true"> 
    <providers> 
    <clear /> 
    <add name="HyperionRoleProvider" type="Census.BUD.Common.HyperionRoleProvider" applicationName="/" /> 
    </providers> 
</roleManager> 

回答

0

来源:

http://learn.iis.net/page.aspx/528/how-to-use-the-sample-read-only-xml-membership-and-role-providers-with-iis-70/

“这些样本非常适合与IIS 7.0使用演示或测试的网站,但由于IIS 7.0是写他们不工作原始指令允许您将示例成员资格/角色提供程序部署到Web站点的App_Code文件夹中,但IIS 7.0要求在提供程序之前在全局程序集缓存(GAC)中注册提供程序可以部署,考虑到这一点,以下步骤将引导您完成编译和部署g开发系统上的只读XML提供程序。“

确保您的程序集是在GAC

+0

我现在的问题是,我使用的是Windows 2008的和我编译好的基础上的文章,但我看不到我的组件在c:\ windows \ assembly目录。 Windows Server 2008会对组件做些什么吗? – Richard 2011-04-29 19:00:43

+0

你需要把你的角色提供者所在的程序集(我将该提供程序代码分离出一个单独的库),然后将它拖放到c:\ windows \ assembly中(单击开始,运行,然后在c: \ windows \ assembly作为最简单的方法)。为了将其放入GAC,您还必须确保您的图书馆已签名,以及您可以在您的项目资产上进行哪些签名。 – 2011-04-29 22:46:41

+0

然后您至少可以轻松测试它 - 它可能会导致您的gacutil命令失败(尽管您应该在编译项目时看到这一点) – 2011-04-29 23:09:17

相关问题