【问题标题】:AspNetSqlRoleProvider coulndt find databaseAspNet Sql RoleProvider 找不到数据库
【发布时间】:2013-08-21 06:02:20
【问题描述】:

我将我的项目上传到 IIS,我使用了我的客户 sqlmembership 提供程序。并创建了角色和用户,但是当我试图编辑/删除/更新数据时,它告诉我“你没有这样做的权限”但在里面角色已经定义它可以做到这一点。 另外,我正在使用 VS ASP.NET 配置工具来添加用户和角色,但是当单击 AspNetSqlRoleProvider 上的测试按钮时,它告诉我找不到数据库。它与 VS 内置服务器工作正常,但我上传了 II,它给出了错误。

这是 web.config 的一部分

<system.web>
    <roleManager enabled="true" />
    <customErrors mode="RemoteOnly" defaultRedirect="~/Admin/Hata.aspx" />
    <authentication mode="Forms">
      <forms cookieless="AutoDetect" loginUrl="~/Login.aspx" />
    </authentication>
    <membership defaultProvider="MySqlMembershipProvider">
      <providers>
        <clear/>
        <!--Add a customized SqlMembershipProvider -->
        <add name="MySqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="OSProjeConnectionString" enablePasswordRetrieval="false"
             enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
             passwordFormat="Hashed" maxInvalidPasswordAttempts="15" minRequiredPasswordLength="5" 
             minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             passwordStrengthRegularExpression="">
      </providers>
    </membership>

    <connectionStrings>

        <add name="OSProjeConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=OSProje;Integrated Security=SSPI; User ID=sa;Password=password;" />
      </connectionStrings>

....... ....................

编辑: 我解决了添加此行的问题

<roleManager defaultProvider="roleProvider">         
    <providers>
        <add connectionStringName="OSProjeConnectionString" 
             name="roleProvider"
             type="System.Web.Security.SqlRoleProvider" />
    </providers>
</roleManager>

【问题讨论】:

  • 你能显示“OSProjeConnectionString”吗?
  • 是的,我添加了连接字符串
  • 更改 Integrated Security=false,这样它将使用连接字符串中提供的用户名和密码。
  • 更多详情请参考this
  • 我改变了,但仍然告诉我找不到 AspNetSqlRoleProvider

标签: asp.net sql-server iis-7


【解决方案1】:

这是造成问题的行。 但是您没有指定 DefaultProvider,因此它以 AspNetSqlRoleProvider 作为提供程序。现在您必须检查 AspNetSqlRoleProvider 的设置。或者您可以添加以下代码:

<roleManager 
enabled="false" 
cacheRolesInCookie="false" 
cookieName=".ASPXROLES" 
cookieTimeout="30" 
cookiePath="/" 
cookieRequireSSL="false" 
cookieSlidingExpiration="true" 
cookieProtection="All" 
defaultProvider="AspNetSqlRoleProvider" 
createPersistentCookie="false" 
maxCachedResults="25">
<providers>
  <clear />
  <add 
     connectionStringName="LocalSqlServer" 
     applicationName="/" 
     name="AspNetSqlRoleProvider" 
     type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <add 
     applicationName="/" 
     name="AspNetWindowsTokenRoleProvider" 
     type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0,        
     Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 </providers>
</roleManager>

做了一些修改。

关于 App_Data 文件夹,它是为应用程序相关数据自动创建的。更多详情请阅读this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 2016-07-30
    相关资源
    最近更新 更多