【发布时间】:2014-03-19 06:01:50
【问题描述】:
这似乎比我擅长的更深入 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>
尽管如此,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) };
}
}
似乎我在请求生命周期的早期错过了交接。
FREB 似乎显示了 PUT 的 GENERAL_SHILD_REQUEST_START,不确定为什么托管管道会创建最终落到无法处理 PUT 的 DefaultDocumentModule 的额外子请求。
【问题讨论】:
-
WebAPI 是否处理 PUT?
-
我的意思是它是否处理 PUT 动词:asp.net/web-api/overview/web-api-routing-and-actions/…
-
添加了动作方法,是的,它们用路由和动词装饰。
标签: asp.net http iis asp.net-web-api