如何在ASP.NET Core中处理PROPFIND HTTP Verb请求(或其他)?

时间:2016-09-05 14:12:54

标签: asp.net-core asp.net-core-mvc

我正在寻找实现选项如何使用ASP.NET Core或ASP.NET Core MVC处理具有更多异国情调的HTTP谓词的请求,例如PROPFINDMKCOL

在ASP.NET Core 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核心源代码库以获得一些想法。但我现在陷入困境。

1 个答案:

答案 0 :(得分:1)

解决方案比我想象的要容易。您可以通过HTTP动词调用Controller Actions(如

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)
        ....
    }

}