无法生成一致的令牌ASP.NET C#服务器端Oauth2.0

时间:2018-01-16 14:07:27

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

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

我可以使用帐户控制器/api/Account/Register完美地生成令牌本地主机,但是当我发布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,但在服务器上没有工作。

2 个答案:

答案 0 :(得分:0)

它看起来像500内部服务器错误。 任何其他端点都在工作所有的东西都不起作用吗?

您在服务器上检查连接字符串,并检查数据库是否存在并且具有正确的表。

确保任何envirement specyfic设置具有有效值。

答案 1 :(得分:0)

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

  

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

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

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

我在这里不明白的是为什么我有一个SQL问题,因为帐户控制器从不使用任何数据库?

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

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

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