none
IIS 提示405错误 RRS feed

  • 问题

  • 在搭建完IIS web服务器之后,开启了IIS的基于windows的身份验证和用户的所有权限,但是在测试的时候出现了405的错误如下图所示:
    * upload completely sent off: 71 out of 71 bytes

    <HTTP/1.1 405  Method Not Allowed

    <Allow:Get ,HEAD,OPTIONS,TRACE

    <Contenet-Type:text/html

    <Server:Microsoft-IIS/8.5

    <Persistent-Auth:True

    <X-Powered-By:ASP.NET

    <Date:Fri,16 Jun 2017 11:55:56 GMT

    <Content-Length:1293>

    发现POST没有设置被允许,根据一些官网的说法,查看到C:\Windows\System32\inetsrv\config路径下的applicationHost的文件中都有在verb下带有POST的参数;

    IIS web的网站是我自己手动创建的,

    我該怎么开启这个网站的POST参数,允许我的客户端上传一些文件(.xml和.cfg)到这个网站文件中呢?

    2017年6月19日 9:24

全部回复

  • 你好,

    在上传文件的时候还有可能会使用到 PUT 方法,你可以使用F12工具检查请求所使用的方法。如果使用的方法是PUT, 你需要配置对应的Handler去支持PUT方法。

    你可以启用IIS详细错误页面来获取更多的错误信息,关于如何启动IIS详细错误页,你可以参考下面的链接。

    https://blogs.msdn.microsoft.com/rakkimk/2007/05/25/iis7-how-to-enable-the-detailed-error-messages-for-the-website-while-browsed-from-for-the-client-browsers/

    另外,麻烦检查一下IIS Request Filtering 模块,是否在该模块中禁用了POST方法。

    2017年6月20日 8:06
    版主
  • WebApi的Controller或者MVC的Controller方法上增加标注:

    [HttpPost]
    [AllowAnonymous]


    ericzhou

    2017年6月20日 13:40
  • 你提交的url是.html扩展名结尾的吧?默认情况下,.html是不接收数据的,不能进行post提交。你可以在iis里面进行设置,添加POST动作。可以参考网上的教程,如 搜索 iis .html post 关键字即可得到

    【孟子E章】

    2017年6月26日 6:02
    版主
  • 你好:

    我试了下你说的方法,在抓取日志的时候发现还是会有405的错误:

    #Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
    2017-06-26 08:03:57 10.200.101.28 POST /configbackups/ - 80 - 10.10.18.31 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0) - 401 2 5 62
    2017-06-26 08:03:57 10.200.101.28 POST /configbackups/ - 80 YEALINKSFB\yl01 10.10.18.31 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.0) - 405 0 1 31

    你们都是使用哪个版本的服务器来实现文件上传到服务器功能的呢?

    2017年6月26日 8:07
  • 哪个版本的服务器都可以实现上传。

    你post的是一个目录

    POST /configbackups/

    目录下有默认文件名吗?一般情况下,post到的是一个具体的文件名


    【孟子E章】

    2017年6月29日 6:58
    版主
  • POST /configbackups/ 这个表示的是我在IIS服务器上的目录文件夹,我是需要将具体的文件POST在这里面,后来我发现将Handler Mappings 的StaticFile的Mapping关闭的时候,发现不会报405的错误,报文有回复200OK了,但是呢在网站的目录下没有看到上传的文件,发现这个StaticFile这个控制了StaticFileModule,DefaultDocumentModule,DirectoryListingModule这些模块,字面意思可以看出是用来控制网站目录文件和显示的,但是奇怪的是,我开启mapping后,再赋予StaticFile模块的verb有POST,PUT,所有可以填的值都填写之后,还是会出现405;所以感觉好矛盾的说。
    2017年7月6日 1:10