Win10下MySql ASP.NET Identity意外绑定SQL Server
Posted
技术标签:
【中文标题】Win10下MySql ASP.NET Identity意外绑定SQL Server【英文标题】:MySql ASP.NET Identity unexpectedly binding to SQL Server under Win10 【发布时间】:2016-05-06 11:35:05 【问题描述】:我有一个实时 Web 应用程序(ASP.NET 4.5.1、MVC 5.2.3、EF 6.1、mysql 5.1.35),它在 MS Server2008R2(Web) 上运行了几个月,没有任何困难。
我正在尝试将我的开发环境移动到 Win10 虚拟机(以前是 Win7 虚拟机),并在 VS2015 的新机器上打开实时系统和复制数据库的副本。
运行应用程序时(我使用 asp.net Identity 1.0 进行身份验证)我的 _layout.vbhtml 页面中出现以下异常:
“System.Data.SqlClient.SqlException”类型的异常发生在 System.Web.dll 但未在用户代码中处理
附加信息:网络相关或特定于实例的错误 在建立与 SQL Server 的连接时发生。服务器是 未找到或无法访问。验证实例名称是否为 正确,并且 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 错误定位 服务器/实例指定)
在:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav" style="width:auto;white-space: nowrap;">
@If (Request.IsAuthenticated) Then
@<li>@Html.ActionLink("Home", "Index", New With .Area = "", .controller = "Home")</li>
If **User.IsInRole("Salesman")** Then
由于我没有使用 SQLServer,所以没有处理异常也就不足为奇了...
我很困惑为什么用户对象(System.Web.Security.RolePrincipal)使用 SQLClient 而不是 MySQLClient 指定的:
Public Class ApplicationDbContext
Inherits IdentityDbContext(Of ApplicationUser)
Public Sub New()
MyBase.New("IMSSecurityEntities")
End Sub
Web.config:
<connectionStrings>
<add name="IMSSecurityEntities" connectionString="data source=localhost;database=db1;Uid=root;Pwd=password;" providerName="mysql.data.mysqlclient" />
同样的项目在Server2008R2机器上运行VS2015时正确连接到MySQL数据库。
asp.net Identity 是否会在某些情况下“退回”到使用 SQLServer?
【问题讨论】:
【参考方案1】:进行了更多挖掘和谷歌搜索,并在以下位置找到了解决方案:User.IsInRole doesn't work
将以下内容添加到 web.config 解决了该问题:
<modules>
<remove name="RoleManager" />
</modules>
RoleManager
默认为SimpleMembership
。我不知道为什么这在一台机器上不是问题,但在另一台机器上却有问题,但显然某处存在歧义,这对其进行了排序。
【讨论】:
以上是关于Win10下MySql ASP.NET Identity意外绑定SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
亲测Asp.net Mvc5 + EF6 code first 方式连接MySQL总结
asp.net网站连接MYSQL 提示 Access denied for user 'root'@'localhost' (using password: YES)