ASP Web API 对 /Token 的调用时断时续
ASP Web API call to /Token intermittent
由于我已将我的应用程序部署到测试环境,所以对 /Token 的调用(用于登录并获取令牌)正在播放。问题是它在几次调用后根本无法工作(需要 30 秒然后 returns 一个 500 错误),然后突然间它就会开始工作(并且工作完美,在 < 50 毫秒)。
在开发机器上的本地主机上,它从未跳过任何一个节拍。
我的开发设置只是在本地主机上;我的测试设置有三台服务器 - 一台用于 html/js 和 iis 重写,它指向托管 API 的第二台服务器和第三台数据库服务器。
通过以下 javascript 的相同响应:
var loginData = {
grant_type: 'password',
username: self.loginEmail(),
password: self.loginPassword()
};
$.ajax({
type: 'POST',
url: url + '/Token',
data: loginData
}).done(function (data) {
self.loggedInUserName(data.userName);
// Cache the access token in session storage.
sessionStorage.setItem(tokenKey, data.access_token);
或者,如果我使用 POSTMAN,我会得到相同的响应。
Web.config:
<system.webServer>
<httpErrors errorMode="Detailed" />
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
我也放了以下内容:
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
在我的 Global.asax 文件中,但仍然没有显示错误消息(想知道这是否是隐藏它们的 IIS 重写?)
编辑:所有对 /api 的调用都完美无缺,只有 /Token 正在播放。
啊,真是个愚蠢的问题。
由于正在通过 IIS 重写,详细错误无法正常工作。我开始直接点击 API,错误显示是 "network path not found"。
原来我的数据库服务器的 DNS 连接到错误的 IP(未加入域的 IP)。我仍然认为它是间歇性的很奇怪,但它现在似乎正在工作。
由于我已将我的应用程序部署到测试环境,所以对 /Token 的调用(用于登录并获取令牌)正在播放。问题是它在几次调用后根本无法工作(需要 30 秒然后 returns 一个 500 错误),然后突然间它就会开始工作(并且工作完美,在 < 50 毫秒)。
在开发机器上的本地主机上,它从未跳过任何一个节拍。
我的开发设置只是在本地主机上;我的测试设置有三台服务器 - 一台用于 html/js 和 iis 重写,它指向托管 API 的第二台服务器和第三台数据库服务器。
通过以下 javascript 的相同响应:
var loginData = {
grant_type: 'password',
username: self.loginEmail(),
password: self.loginPassword()
};
$.ajax({
type: 'POST',
url: url + '/Token',
data: loginData
}).done(function (data) {
self.loggedInUserName(data.userName);
// Cache the access token in session storage.
sessionStorage.setItem(tokenKey, data.access_token);
或者,如果我使用 POSTMAN,我会得到相同的响应。
Web.config:
<system.webServer>
<httpErrors errorMode="Detailed" />
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
我也放了以下内容:
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy
= IncludeErrorDetailPolicy.Always;
在我的 Global.asax 文件中,但仍然没有显示错误消息(想知道这是否是隐藏它们的 IIS 重写?)
编辑:所有对 /api 的调用都完美无缺,只有 /Token 正在播放。
啊,真是个愚蠢的问题。
由于正在通过 IIS 重写,详细错误无法正常工作。我开始直接点击 API,错误显示是 "network path not found"。
原来我的数据库服务器的 DNS 连接到错误的 IP(未加入域的 IP)。我仍然认为它是间歇性的很奇怪,但它现在似乎正在工作。