繁体   English   中英

除非Fiddler正在运行,为什么IE11会创建空白帖子请求?

[英]Why does IE11 create blank post request except when Fiddler is running?

我的AngularJS $ http发布请求我的C#WebAPI restful服务在Internet Explorer 11的Windows 8.1上失败。Firefox和Chrome都可以正常工作。

更多细节:

  • IT部门说我们的网络没有代理
  • 在所有浏览器中都取消选中所有“自动检测”和“使用代理”设置
  • 请求在我的localhost上无法访问IIS,并在本地服务器上运行站点和服务
  • IE11的增强保护模式已关闭
  • 请求的连接头是'keep-alive'(我也尝试'关闭',它仍然失败)
  • 有时一个请求会成功,只有第二个请求才会失败
  • 没有显示错误 - IE网络选项卡中的请求只显示“待定”,所有标题和正文均为空白
  • 我使用的是HTTP,而不是HTTPS
  • 我已经尝试了元标记'X-UA-Compatible'IE9和Edge
  • 在他们的机器上使用IE11的同事的请求也失败了
  • 当Fiddler运行时,所有浏览器中的所有调用都能正常工作
  • Visual Studio 2013浏览器链接已关闭(因此SignalRArtery JS文件不会不断调用服务器并干扰测试)

我的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运行时成功调用的样子: 在此输入图像描述

任何人都可以推荐任何其他设置来检查或尝试一下吗?

我修好了。 我的同事建议采用传统的调试策略来使最简单的情况起作用 - 所以我做了一个测试后控制器Web服务,它可以处理每个调用:

在此输入图像描述

然后我看到这个方法与失败的方法之间的唯一区别是BaseController,它包含以下方法:

在此输入图像描述

然后我将代码更改为此以删除可疑的异步和等待命令: 在此输入图像描述

现在一切都很完美。 但有人可以解释为什么吗? 在谷歌搜索这个问题的过去一天,我已经读过关于IE发送两个数据包而不是像其他浏览器一样的数据包,以及关于资源被打开干扰连接。 但是我不明白这个await命令如何在一个浏览器中破坏连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM