Asp.net IIS版本之间的HTTP状态码不同

Asp.net IIS版本之间的HTTP状态码不同,asp.net,api,iis,Asp.net,Api,Iis,我正在为我的Web API编写一些模糊测试,并且在IIS 8.5和IIS 10.0之间的HTTP返回代码中遇到了一些差异。我的API中有以下方法: [Route("{id:int}/GetSomething")] [HttpGet] public async Task<IHttpActionResult> GetSomething(int id) { return Ok(2); } 这很有效 在模糊测试期间,我尝试对API进行不同的随机输入,例如字符串而不是int: htt

我正在为我的Web API编写一些模糊测试,并且在IIS 8.5和IIS 10.0之间的HTTP返回代码中遇到了一些差异。我的API中有以下方法:

[Route("{id:int}/GetSomething")]
[HttpGet]
public async Task<IHttpActionResult> GetSomething(int id)
{
    return Ok(2);
}
这很有效

在模糊测试期间,我尝试对API进行不同的随机输入,例如字符串而不是int:

http://server/api/Something/asdf/GetSomething 
当我在IIS Express 10.0上托管API时,状态代码为“404未找到”。 当我在Windows Server 2012 R2的IIS 8.5上托管API时,状态代码为“401 Unauthorized”

当我尝试插入空白时:

http://server/api/Something/ /GetSomething 
两台服务器都返回“404未找到”


为什么它们在字符串输入中的行为不同?有没有办法将其中一个配置为与另一个相同的行为?

我认为您会得到不同的状态代码,因为两个版本的IIS在不同的securitycontext中运行这两个站点。检查IIS 8.5的应用程序池用户。您使用什么身份验证方法?Windows身份验证有其著名的环回问题,这导致了401。我对Web API和IIS比较陌生@AllanS.Hansen,你能提供一些关于我应该寻找什么的更多信息吗?IIS 8.5在“ApplicationPoolIdentity”下运行我的站点。我正在使用基于声明的身份验证@LexLi。我不认为Windows身份验证是这里的问题。我从这里开始,看看上面提到的一些东西是否对您有帮助:
http://server/api/Something/ /GetSomething