小编Mon*_*ane的帖子

IIS 8.5上的HTTP PUT失败

这似乎比我擅长的要深入IIS!因此,我有一个非常适合GET和POST的Web API控制器。第一个屏幕截图显示了对GET的处理。一切都很好,我得到了回应。

查看全尺寸 成功细节

但是随后我提出了一个PUT请求,一切都崩溃了。它似乎遍历ManagedPipelineHandler,然后陷入DefaultDocumentModule,并失败,并出现405。

查看全尺寸 失败摘要

查看全尺寸 失败详情

没有安装WebDAV,无论如何我都尝试在web.config级别将其删除。处理程序被覆盖以支持PUT。

<handlers>
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" />
</handlers>
Run Code Online (Sandbox Code Playgroud)

尽管如此,ASP.NET仍无法处理该请求,因此我正在寻找有关调试的想法?这是失败的操作方法,即PUT和起作用的方法,即GET。

public class ProductsController : ApiController
{
    [HttpPut]
    [Route("api/products")]
    public AddProductResponse AddProduct(AddProductRequest request)
    {
        return new AddProductResponse(); 
    }

    [HttpGet]
    [Route("api/products/manufacturers")]
    public ManufacturersResponse GetProductManufacturers()
    {
        var productService = new ProductService();
        var manufacturers = productService.GetManufacturers();
        return new ManufacturersResponse { Manufacturers = manufacturers.OrderBy(m => m.BusinessName) };
    }
}
Run Code Online (Sandbox Code Playgroud)

似乎我错过了请求生命周期早期的传递。

FREB似乎显示了PUT的GENERAL_SHILD_REQUEST_START,但不确定为什么托管管道正在创建该额外的子请求,该子请求最终落入无法处理PUT的DefaultDocumentModule。

asp.net iis http asp.net-web-api

5
推荐指数
1
解决办法
3370
查看次数

标签 统计

asp.net ×1

asp.net-web-api ×1

http ×1

iis ×1