In an ASP.NET application, we have plenty (think, several dozen) of controller classes like this:
[RoutePrefix("some/thing/1.0")]
public class SomeController : ApiController
{
[HttpGet]
[Route("")]
public string GetInfo()
{
return "hello world";
}
[HttpPut]
[Route("")]
public void StoreInfo(string info)
{
// ...
}
}
This has been working fine for some weeks, without any issues. We could call those endpoints as follows:
GET https://myWebApp/client/some/thing/1.0
Now, with yesterday's nightly build, this has stopped working. Suddenly, we can only access those URLs with a trailing slash, i.e.
GET https://myWebApp/client/some/thing/1.0/
This applies to parametrized queries, as well:
GET https://myWebApp/client/some/thing/1.0?x=42
doesn't work anymore, but
GET https://myWebApp/client/some/thing/1.0/?x=42
does.
As the last working build is just one day back, I have scanned the commit history of our source control, and I have compared the build packages side by side. I was not able to find any change that seemed to be related to this issue.
Moreover, this is definitely related to some change in our application: I could reproduce the issue on my local copy of the application exactly after updating my binaries to those of yesterday's build. (Note that another build has been created this morning, and the issue is still there. So, it's not that yesterday's build was broken in some way; whatever has changed seems to be permanent.)
What could have changed and where else could I go looking for it?
Or, asked more proactively:
Where can I change this behaviour?