我在尝试自动生成所有客户端用户都可以使用的令牌时遇到了麻烦。我正在使用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,但在服务器上没有工作。
答案 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);