這看起來好像比我擅長的更深入IIS!所以我有一個Web API控制器,可以很好地處理GET和POST。第一個屏幕截圖顯示了一個GET的處理。一切都很好,我得到了迴應。在IIS 8.5上HTTP PUT失敗
但後來我做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嗎? – acarlon
通過這個我的意思是它處理PUT動詞:http://www.asp。net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api – acarlon
添加了操作方法,並且它們裝飾有路由和動詞。 – Montane