ASP.NET HttpPost方法返回“不支持application / x-www-form-urlencoded”

时间:2016-02-25 16:51:36

标签: asp.net-mvc iis-7.5

当我向我的ASP.NET MVC控制器方法提交带有Content-Type:application/x-www-form-urlencoded的HTTP POST消息时,它返回一个HTTP错误状态代码为415 Unsupported Media Type的响应,以及响应正文:

{"Message":"The request entity's media type 'application/x-www-form-urlencoded' is not supported for this resource."}

此错误仅发生在我的生产环境中;相同的代码在我的暂存和本地开发环境中按预期工作(即方法代码执行,方法返回HTTP 200 OK或适当的错误)。

由于错误只发生在Production中,与我的其他环境使用相同的部署代码,我的猜测是这个问题是由某种环境错误引起的 - 例如,我的Production应用程序配置有问题在IIS中,或生产应用程序目录中某处的文件系统权限问题 - 但我不知道在哪里看。

我的代码

我的控制器方法:

[HttpPost]
[Route("Account/Login")]
public AccessTokenDTO Login([FromBody] AccountDTO account)
{
    // (Returns an AccessTokenDTO if the credentials are good; 
    // otherwise throws an HttpResponseException with a 401.)
}

简单的AccountDTO类,如果重要:

public class AccountDTO
{
    [Required]
    public string Username { get; set; }
    [Required]
    public string Password { get; set; }
}

服务器HTTP响应

生产环境的意外HTTP 415错误响应包括以下HTTP标头和值:

Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 25 Feb 2016 16:28:16 GMT
Content-Length: 117

当请求成功时,即当我将其提交到我的暂存URL而不是我的生产URL时,会返回完全相同的标头和值集(DateContent-Length值除外)。

客户端HTTP请求

除了从我的实际客户端程序调用时看到错误失败,我还使用Firefox扩展Poster提交HTTP POST并检查响应。请求URL如下所示:

https://[myserver].com/[mypath1]/[mypath2]/Account/Login

请求标题:

Content-Type: application/x-www-form-urlencoded

请求正文:

Username=my-urlencoded-username&Password=my-urlencoded-password

我的问题

ASP.NET出于什么原因返回"The request entity's media type 'application/x-www-form-urlencoded' is not supported for this resource."错误,但仅在我的某个环境中?

0 个答案:

没有答案