Search code examples
iisasp.net-core-mvc.net-5asp.net-core-identitywindows-server-2019

ASP.NET Core 5 MVC web app returning bad request errors in some pages after deployment to IIS


I have tried everything. I configured Windows Server 2019 according to Microsoft documentation and I successfully deployed a .NET 5 web application to the IIS.

I can get to the login page. I can even get to the forgot password page and they show themselves fine. However when I try to do any action (send the forgot password link or login to the page) I get a "Bad Request" from the server. I haven't found a way to explain why.

I have tried several, and I mean several things found Googling around but nothing helps. This include disabling https within the .NET Core application, trying to get a detailed error page using the app.UseDeveloperExceptionPage(); instruction inside Startup, etc etc but nothing works. I always receive this page trying to execute any action:

IIS throwing bad request

If someone could help or point me into the right direction, I will really, REALLY appreciate it.

Thank you

PD: In case it has anything to do with the problem, the error, at least the two that I can reproduce (because I can't even log in), happens, I think (maybe don't) when redirecting to another page in Microsoft Identity.

EDIT: code was asked by one of you. Thank you.

As you see, there's nothing specific in the forgot password screen for my application. This is scaffold code from Microsoft Identity. I even edited it and just let one line of code inside it, which is the default return code anyway as follow:

public async Task<IActionResult> OnPostAsync()
{
    return RedirectToPage("./ForgotPasswordConfirmation");
}

As you can see, there's nothing special with that code. Here's the html that calls it, again, is a scaffold of Microsoft Identity with little to no changes (by little, I mean, maybe some CSS and a new value of view data):

Microsoft Identity Forgot Password Scaffold

But then again, forgot password page actually shows and seems well in the front end, but immediately I try to enter my email and click enter in this page, (also, just a scaffold of Microsoft Identity):

enter image description here

Nothing happens. I receive the bad request. There's NO magic nor custom code here. Something silly is going on.

EDIT II: YES, locally it works perfectly. The strange behavior happens only when deployed to IIS.

EDIT III: I coded and enabled logging in my .NET Core APP and wrote that to a file, and I think I finally got, at least the error (not the reason yet):

Anti Forgery Token Error

But why?? Cookies are enabled in the server browser without avail, same issue. Someone has a better idea than disabling anti forgery rules to login and forgot password pages?

Thank you


Solution

  • For some reason, when I deployed the first version of my app into IIS, I thought it was a good idea to just browse it from the IIS link. Of course, in a new mounted Windows Server 2019, IE is still the default browser. I connected directly to the IP of my web app via VPN, but used Chrome this time. Guess what? All problems disappeared. Yes, it's a bad idea to try to use a modern framework like .NET Core Identity with IE.