为什么我的自定义成员资格和角色提供程序在本地工作,但部署后失败?

时间:2012-02-15 21:19:30

标签: c# asp.net asp.net-mvc asp.net-membership asp.net-mvc-4

我创建了一个自定义成员资格和角色提供程序,以利用ASP.NET MVC 4中内置的身份验证和授权。在我的应用程序开发过程中,一切都进展顺利,直到我尝试将其部署到测试环境中。

从Visual Studio中以调试模式启动应用程序非常正常。但是,然后我使用Visual Studio的一键部署将我的应用程序加载到在我的开发机器上运行的IIS实例中。我可以在浏览器中加载应用程序,但身份验证不再有效。使用Fiddler,我发现cookie被发回,但是我无法访问使用[Authorize]属性限制的网站部分。

以下是我的web.config中的相关摘录。

<membership defaultProvider="PonosMembershipProvider">
  <providers>
    <clear />
    <add name="PonosMembershipProvider" type="Ponos.Identity.PonosMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Ponos" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="Ponos.Identity.PonosRoleProvider" connectionStringName="DefaultConnection" applicationName="/Ponos" />
  </providers>
</roleManager>

此外,我在自定义提供程序中使用逻辑设置应用程序名称,如下所示:

public override string ApplicationName
    {
        get
        {
            return "Ponos";
        }
        set
        {
            throw new NotImplementedException();
        }
    }

此外,在附加到正在运行的IIS实例后,我看到输入到表单中的信息通过了验证,但是没有访问权限授予对受限授权访问权限的页面。

此外,用于部署的数据库使用与开发数据库相同的值填充。

如果提供程序在调试环境中运行正常后,部署后为什么不能工作?

2 个答案:

答案 0 :(得分:0)

“我看到输入到表单中的信息通过了验证,但是没有授权访问受限授权访问的页面。”

似乎是权限问题!

答案 1 :(得分:0)

此问题仅在我的部署服务器由其IP直接访问时出现。当我添加一个主机条目,将一个域映射到IP,然后在我的auth cookie中设置相同的域时,问题就解决了。

如果域名是IP地址,我不确定为什么我无法访问cookie,但这确实解决了问题。