我正在尝试使用 Oauth 令牌在 .NET API 上进行身份验证,但在访问/auth 路由时收到以下错误:
在以下情况下发生与网络相关或特定于实例的错误 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,以及 SQL Server 配置为允许远程连接。(提供程序:SQL 网络接口,错误: 50 - 发生本地数据库运行时错误。 指定的本地数据库实例不存在。
我一整天都在试图解决这个问题,但没有成功。如果我得到一些帮助,我会很高兴。
所以,这是我收到错误的代码:
var allowedOrigin = "*";
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { allowedOrigin });
var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
AspnetUserService service = new AspnetUserService();
ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password); <---- here, when i send via Postman, i'll wait ~2 minutes to get a response. When the response arrived, this above error appears.
奇怪的是,我试图使用身份在DB上进行新的注册,并且它起作用了。我试图从数据库中获取一些值,也有效。
我在本地运行 SQL 服务器,这是我的两个连接字符串:
<add name="AuthContext" connectionString="Server=localhost;Initial Catalog=SeeMe2;User ID=SeeMe2;Password=password;" providerName="System.Data.SqlClient" />
<add name="SeeMe2Entities" connectionString="metadata=res://*/Context.SeeMe.csdl|res://*/Context.SeeMe.ssdl|res://*/Context.SeeMe.msl;provider=System.Data.SqlClient;provider connection string="data source=localhost;initial catalog=SeeMe2;persist security info=True;user id=SeeMe2;password=password;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
我尝试调试代码,所有变量似乎都有正确的值。 有什么建议吗?多谢!
您的 SQL 连接字符串有问题。
连接字符串为:
<add name="AuthContext" connectionString="localhost;Initial Catalog=SeeMe2;User ID=SeeMe2;Password=password;" providerName="System.Data.SqlClient" />
那里没有服务器和数据库属性。
正确的连接字符串是:
<add name="AuthContext" connectionString="Server=localhost;Database=SeeMe2;User ID=SeeMe2;Password=password;" providerName="System.Data.SqlClient" />
有关连接字符串的详细信息,请参阅此处。
还要检查SeeMe2Entities
连接字符串。
正如我所看到的,它在连接部分的值不正确(您也错过了服务器和数据库)。
在 AuthContext 连接字符串中缺少属性Server
。 应该是这样的。
<add name="AuthContext" connectionString="Server=localhost;Initial Catalog=SeeMe2;User ID=SeeMe2;Password=password;" providerName="System.Data.SqlClient" />