【问题标题】:Cannot generate a consistant token ASP.NET C# server-side Oauth2.0无法生成一致的令牌 ASP.NET C# 服务器端 Oauth 2.0
【发布时间】:2018-06-25 06:32:56
【问题描述】:

我在尝试自动生成所有客户端用户都可以使用的令牌时遇到了麻烦。我正在使用 Oauth 2.0。

我可以使用帐户控制器/api/Account/Register 完美地生成令牌 localhost,但是当我发布 Web api 时,我无法使用该令牌访问,而且我也无法像 localhost 那样生成令牌。

有什么方法可以像我在 localhost 一样在服务器端生成令牌吗?它应该与我重新发布应用程序时令牌应该仍然相同的方式保持一致。

我正在使用 Postman 对其进行测试。当我用这个 json 调用 /api/Account/Register 时:

{
  "Email": "da@a.com",
  "Password": "sample striAng 21|",
  "ConfirmPassword": "sample striAng 21|"
}

它会像这样返回一个错误:

{
    "Message": "An error has occurred."
}

我正在完全复制我在本地主机上所做的,但在服务器上不起作用。

【问题讨论】:

  • 在 localhost 和服务器上生成的令牌总是不同的,生成调用该 API 的令牌,使用Postman或任何其他工具)测试一下
  • 您好,我试过了,但还是不行。我从邮递员那里调用 de Account 控制器来创建一个帐户并获取令牌,但我收到一个错误。
  • 嗯,有什么错误?您需要将这些详细信息添加到您的问题中,通常您在使用 API 时调用/Token 以获取令牌,您需要显示使用您在做什么
  • 问题是我收到的错误消息什么也没说。我像这样编写一个 json:{“消息”:“发生错误。” }
  • 您确定您已正确设置数据库,或发布了正确的文件和 dll 文件吗?通常该消息是内部错误

标签: c# asp.net-web-api access-token


【解决方案1】:

问题是您要连接到本地计算机上的 SQL Express 数据库,但在大多数情况下,服务器不使用 SQL Express(登录时也没有相同的凭据),您必须设置您的web.config 和 sql 连接。

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:52 - 无法找到本地数据库 运行时安装。验证 SQL Server Express 是否正确 已安装并且启用了本地数据库运行时功能。)"

在您的 Web.config 上更改/注释掉您当前的连接字符串并将其替换为您的服务器

 <connectionStrings>       
    <add name="YourDataBaseContextName" connectionString="Data Source=TheConnection;Initial Catalog=YourDataBaseName;User Id=TheUserOfDatabase;Password=YourHopeNotSoEasyPassword;" providerName="System.Data.SqlClient" />
 </connectionStrings>

我不明白为什么我有一个 sql 问题,因为 Account 控制器从不使用任何数据库?

他们确实使用它,毕竟您必须将寄存器数据保存在某个地方,对吧?

更具体地说,这些行注册并将您发送的模型保存到数据库:

var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };    
IdentityResult result = await UserManager.CreateAsync(user, model.Password);

【讨论】:

  • 非常感谢威廉 :) 成功了!!谢谢!
  • @PabloSalazar Remeber 如果对您有帮助,请记住答案:)
【解决方案2】:

看起来像 500 内部服务器错误。 任何其他端点都在工作,但一切都不起作用?

您应该检查服务器上的连接字符串,并检查 db 是否存在并具有正确的表。

确保任何环境特定设置都具有有效值。

【讨论】:

  • 您好,感谢您的回答。数据库存在,连接字符串工作正常,因为如果我删除 [Authorized] 标签(这样我就可以使用没有身份验证的 webapi),它工作得很好。
猜你喜欢
  • 2017-04-30
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2014-02-25
  • 1970-01-01
  • 2012-06-20
  • 2015-10-12
  • 1970-01-01
相关资源
最近更新 更多