在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