自定义角色提供程序不在IIS上工作但在VS开发服务器中正常工作

时间:2012-05-18 15:43:00

标签: asp.net iis roleprovider

经过深度Google搜索后,我找不到任何解决方法或解决问题的方法,所以请在这里问一下。 在web.config的第一部分

......
   <location path="DevReg.aspx">
    <system.web>
      <authorization>
        <allow roles="C,csvImportExport"/>
        <deny users="*,?"/>
      </authorization>
    </system.web>
  </location>
.......
  <system.web>
    <roleManager enabled="true" defaultProvider="MyRoleProvider">
      <providers>
        <clear />
        <add name="MyRoleProvider" type="DataAccess.Common.MyRoleProvider, DataAccess" applicationName="myapp" />
      </providers>
    </roleManager>
  </system.web>
.......

主WebApp在同一解决方案中的其他项目中。 当我在Visual Studio提供程序中运行app时,必须运行精细授权工作,我也可以从代码中调用我的提供程序(例如IsUserInRole返回正确的结果)。但在部署到本地IIS(Win 7 / IIS 7.5)之后。我尝试使用VirtualDirectory和WebApp没有运气。

当我在IIS中运行的应用程序看起来像服务器从不使用角色提供程序时,只在启动时调用Initialize方法,而在更新时调用更新。

请给我正确的方向来解决这个问题,如果需要,我会显示更多细节。

2 个答案:

答案 0 :(得分:0)

创建新的Application PoolManaged Pipeline Mode设置为Integrated。将Identity值设置为NetworkService。在此之后,将新创建的Application Pool设置为网站的Application Pool

答案 1 :(得分:0)

改变观点后我发现了问题。在项目中,我们还使用了一个丑陋的HttpHandler和一行Context.SkipAuthorization = true;来解决我的麻烦。