Ral*_*ing 3 asp.net-core-mvc asp.net-core
我正在寻找如何使用更奇特的 HTTP 动词(例如 ASP.NET Core 或 ASP.NET Core MVC)处理请求的实现PROPFIND选项MKCOL。
在 ASP.NET Core MVC 中,你可以用以下方式装饰你的操作方法
[HttpGet]
[HttpPut]
[HttpPost]
[HttpDelete]
[HttpHead]
[HttpOptions]
[HttpPatch]
Run Code Online (Sandbox Code Playgroud)
对于 REST API 或 Web 应用程序,这些 HTTP 动词就足够了。例如,对于 WebDavPROPFIND或MKCOL动词也必须以某种方式处理。
是否有可能扩展 ASP.NET Core MVC 以支持比上面列出的更多的 HTTP 动词?或者您认为编写自己的中间件组件是将 WebDav 功能添加到 ASP.NET Core 应用程序的更好方法吗?
我研究了 ASP.NET Core 源代码存储库以获得一些想法。但我被困在当下。
解决方案比我想象的要容易。您可以通过 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)
....
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |