Richard
Richard

Reputation: 16812

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

My AngularJS $http post requests to my C# WebAPI restful service fail on Windows 8.1 in Internet Explorer 11. Firefox and Chrome both work.

Some more details:

My AngularJS request call looks like this:

var url = UrlService.GetUrlOfApi() + 'Account/SignIn';
var postData = { 'username' : username, 'password' : password };
$http(
{
    'url': url,
    'data': postData,
    'method': 'POST'
})
.success(function (data)
{
     ...

My C# service looks like this:

[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;
        }
    }

This is what a failing call looks like in IE11, totally blank:

enter image description here

This is what a successful calls looks like when Fiddler is running: enter image description here

Can anyone recommend any other settings to check or things to try please?

Upvotes: 3

Views: 1010

Answers (1)

Richard
Richard

Reputation: 16812

I have fixed this. My colleague advised the traditional debugging strategy of getting the simplest case to work - so I made a test post controller web service that worked every call:

enter image description here

I then saw the only difference between this method and the one that failed is the BaseController, which contained these methods:

enter image description here

I then changed the code to this to remove the suspicious looking async and await commands: enter image description here

Everything now works perfectly. But can anyone explain why? In my googling this problem for the past day I've read about IE sending two packets instead of one like other browsers, and about resources being left open interfering with connections. But I don't understand how this await command broke the connection in just one browser.

Upvotes: 0

Related Questions