【问题标题】:How to handle PROPFIND HTTP Verb requests (or other) in ASP.NET Core?如何在 ASP.NET Core 中处理 PROPFIND HTTP Verb 请求(或其他)?
【发布时间】:2016-09-05 23:58:32
【问题描述】:

我正在寻找实现选项,如何使用 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 动词? 还是您认为编写自己的中间件组件是向 ASP.NET Core 应用程序添加 WebDav 功能的更好方法?

我查看了 ASP.NET Core 源代码库以获得一些想法。但我被困在了这一刻。

【问题讨论】:

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


    【解决方案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)
            ....
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      • 1970-01-01
      相关资源
      最近更新 更多