我的AngularJS $ http发布对我的C#WebAPI restful服务的请求在Internet Explorer 11的Windows 8.1上失败。Firefox和Chrome都可以正常工作。
更多细节:
我的AngularJS请求调用如下所示:
var url = UrlService.GetUrlOfApi() + 'Account/SignIn';
var postData = { 'username' : username, 'password' : password };
$http(
{
'url': url,
'data': postData,
'method': 'POST'
})
.success(function (data)
{
...
我的C#服务如下所示:
[RoutePrefix("Account")]
[AllowAnonymous]
public class AccountController : BaseController
{
[ResponseType(typeof(SecureResponseModel))]
[Route("SignIn")]
[HttpPost]
public IHttpActionResult SignIn(HttpRequestMessage request)
{
try
{
var userSignInDetails = GetPostData<AuthenticationRequestMessage>(request);
var token = _hisManager.AuthenticateUser(userSignInDetails.Username, userSignInDetails.Password);
return new SignInResponseMessage(token, ApiErrorCode.success, Request);
}
catch(APIException e)
{
throw;
}
}
这是IE11中失败的呼叫,完全空白:
这就是Fiddler运行时成功调用的样子:
任何人都可以推荐任何其他设置来检查或尝试一下吗?
答案 0 :(得分:0)
我已经修好了。我的同事建议采用传统的调试策略来使最简单的情况起作用 - 所以我制作了一个测试后控制器Web服务,它可以完成每个调用:
然后我看到这个方法和失败的方法之间唯一的区别是BaseController,它包含这些方法:
然后我将代码更改为此以删除可疑的异步和等待命令:
现在一切都很完美。但有人可以解释为什么吗?在谷歌搜索这个问题的过去一天,我已经读过关于IE发送两个数据包而不是像其他浏览器一样的数据包,以及关于资源被打开干扰连接。但是我不明白这个等待命令是如何在一个浏览器中打破连接的。