我正在为我正在处理的项目创建API,以便我可以轻松创建移动应用程序。我在YouTube上关注了一个教程ASP.NET Web API login page,并使用了他正在使用的确切代码。然后我尝试在线托管它并在尝试获取令牌时获得不受支持的授权类型,授权类型当前设置为密码。有人为什么会这样做有什么想法?我知道登录信息是正确的,因为它与我在本地使用它仍然连接到实时数据库是一样的。我尝试过更改并删除contentType
但没有运气。
更新:
以下是我遇到问题的代码。现在我有一个典型的MVC剃刀语法形式,但将提交按钮更改为常规按钮,所以我可以运行这个ajax代码:
$('#login').click(function (e) {
e.preventDefault();
$.ajax({
url: "/token",
method: "POST",
data: {
username: $('#Email').val(),
password: $('#Password').val(),
grant_type: 'password'
},
success: function (data) {
sessionStorage.setItem('accessToken', data.access_token);
window.location.href = "/Home/Index";
$('#logins')[0].reset();
}
});
});
这是我所做的唯一更改,其余的是默认来自Visual Studio项目中的ASP.NET Web API。如果需要,我将使用更多代码进行更新。如果您想测试我要去的地方here并使用用户名:test@test.com和密码:P @ ssw0rd登录。如果你去网络检查员,你应该看到令牌挂起并抛出一个500内部服务器错误,我自己测试它不会说不支持的授权类型,但是如果你去像postman这样的东西并经历相同的步骤和点它是api.lock-y.com/token,它告诉我授权类型不受支持。
更新2: 打开自定义错误,这是尝试调用令牌时错误的完整堆栈跟踪,我提前道歉但是当我粘贴堆栈跟踪时我遇到了格式问题,因此它是in this pastebin。我做了一个快速谷歌搜索该错误,它说要检查连接字符串,我把它与工作网站上的配置进行比较,它看起来一样。当我在家时,我会再次更新,并且可以找到令牌的服务器端代码。
以下是例外的重要细节:
[Win32Exception(0x80004005):找不到网络路径]
[SqlException(0x80131904):与网络相关或特定于实例的 建立与SQL Server的连接时发生错误。该 服务器未找到或无法访问。验证该实例 名称是正确的,并且SQL Server配置为允许远程 连接。 (提供者:命名管道提供者,错误:40 - 不能 打开与SQL Server的连接)]
更新3: 这是我当前的连接字符串:
<add name="DefaultConnection" connectionString="Data Source=dbhere;Initial Catalog=initialCatalogHere;User Id=UserIDHere;Password=PasswordHere;" providerName="System.Data.SqlClient" />
<add name="LockyEntities" connectionString="metadata=res://*/Locky.csdl|res://*/Locky.ssdl|res://*/Locky.msl;provider=System.Data.SqlClient;provider connection string="Data Source=dbhere;Initial Catalog=initialCatalogHere;User Id=UserIDHere;Password=PasswordHere;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
更新4: 以下是网络检查员关于错误的一些图像。
答案 0 :(得分:0)
我已经开始工作了!事实证明这是我的连接字符串,必须从我上次托管帐户复制我的连接字符串。谢谢大家的帮助!