2016-09-05 75 views
0

我正在尋找實現選項,以便如何使用更具異國情調的HTTP動詞(如PROPFINDMKCOL)與ASP.NET Core或ASP.NET Core MVC處理請求。如何在ASP.NET Core中處理PROPFIND HTTP Verb請求(或其他)?

在ASP.NET MVC的核心可以用

[HttpGet] 
[HttpPut] 
[HttpPost] 
[HttpDelete] 
[HttpHead] 
[HttpOptions] 
[HttpPatch] 

對於REST API或Web應用程序,這些HTTP動詞都足以裝點你的操作方法。對於WebDav,例如PROPFINDMKCOL動詞也必須以某種方式處理。

是否有可能將ASP.NET Core MVC擴展爲支持比上面列出的更多的HTTP動詞? 或者您認爲編寫自己的中間件組件是將WebDav功能添加到ASP.NET Core應用程序的更好方法嗎?

我已經查看了ASP.NET Core Source Repositories以獲得一些想法。但是我陷入了困境。

回答

1

解決方案比我想象的要容易。你可以通過這樣的HTTP動詞調用控制器動作

public class WebDavController : Controller 
{ 
    [HttpGet] 
    [Route("/dav/{fileName}")] 
    public IActionResult Get(string fileName) 
    { 
     // a classic Get method 
     .... 
    } 

    [Route("/dav/{fileName}")] 
    public IActionResult Propfind(string fileName) 
    { 
     // this is invoked if http verb is PROPFIND 
     // (framework searches for corresponding action name) 
     .... 
    } 

    [AcceptVerbs("LOCK")] 
    [Route("/dav/{fileName}")] 
    public IActionResult MyLockAction(string fileName) 
    { 
     // this is invoked if http verb is LOCK 
     // (framework searches annotated action method) 
     .... 
    } 

}