• membership 启用 roleManager 抛出异常:未能加载文件或程序集MySql.Web


    在vs2013中新建一个ASP.NET MVC 4 WEB 应用程序,使用“基本”模板。web.config中默认使用forms认证方式,并添加了membership的配置。

       <roleManager defaultProvider="DefaultRoleProvider" enabled="true">
          <providers>
            <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/" />
          </providers>
        </roleManager>

    默认是没有enabled属性的,它继承C:WindowsMicrosoft.NETFrameworkv4.0.30319Configmachine.config里的配置是false。如果改成enable=“true”,那么站定启动时也会查找machine.config配置文件中的<roleManager>配置节。

    <roleManager>
                <providers>
                    <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
                    <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
                    <add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/"/>
                </providers>
            </roleManager>

    如果你恰巧也安装过MySQL Connector Net,恭喜你中奖了,运行站点会收到如下异常:

    分析器错误消息: 未能加载文件或程序集“MySql.Web, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d”或它的某一个依赖项。系统找不到指定的文件。
    
    源错误:
    
    
    行 263:                <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    行 264:                <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    行 265:                <add name="MySQLRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" applicationName="/"/>
    行 266:            </providers>
    行 267:        </roleManager>
    
    
    源文件: C:WindowsMicrosoft.NETFrameworkv4.0.30319Configmachine.config    行: 265 

    根据mysql官方的说明是 “Currently, MySQL Connector/Net provides Membership, Role, Profile and Session State Providers.”,也就是说在安装mysql Connector 的时候默认安装了这个provider,并且修改了machine.config文件。

    要想程序不报错有两种处理方式:

    1.在控制面板->程序中找到MySQL Connector Net,修改移除Web Providers

    2.把 C:Program Files (x86)MySQLConnector NET 6.7.4Assembliesv4.0 下的几个类库MySql.Data.dll、MySql.Web.dll、MySql.Data.Entity.dll 拷贝到站点的bin目录下

    参考:

    1. How to Connect to MySQL Using C#

    2. roleManager

  • 相关阅读:
    IMYSQL-叶金荣
    mysql命令
    实效云计算用户组(ECUG) 与 阿里云
    GO 语言
    MYSQL 源代码编绎脚本
    MYSQL 源代码学习
    LINUX 性能工具使用
    CentOS 5.8 上安装 systemtap-2.6 转
    mysql php nginx
    redis 安装
  • 原文地址:https://www.cnblogs.com/zeroes/p/membership_throw_mysqlweb_exception.html
Copyright © 2020-2023  润新知