c# - 如何在 ASP.NET Core 控制器上允许 /(斜线)?
问题描述
我正在尝试使用 ASP.NET 我想在 url 中为 MVC 控制器上的各种地址添加斜杠。这是我正在考虑的网址:
- localhost/file/a/d/aaa.zip?key=randomkeystring 首先
a
是驱动器名称,d
是文件夹名称,aaa.zip
是文件名,key
查询是允许请求的自己的密钥。
只是想知道我怎样才能允许/在控制器上。这是我制作的一些代码(我认为这不相关)
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Server.Controllers
{
[Route("file/")]
[ApiController]
public class FileController : ControllerBase
{
[HttpGet]
public async Task<IActionResult> GetFile(string uri)
{
//if (!Directory.Exists(uri.Substring(0, uri.IndexOf("/"))))
//return File(System.IO.File.OpenRead("");
return Ok(uri.Substring(0, uri.IndexOf("/")));
}
}
}
解决方案
[Route("file")]
在控制器上使用。
[HttpGet("{driveName}/{folderName}/{fileName}")]
在上面添加action
。还将动作参数更新为GetFile(string driveName, string folderName, string fileName)
.
表示forlocalhost/file/a/d/aaa.zip?key=randomkeystring
之后file/
会映射a
到driveName
路由参数,映射d
到路由参数folderName
等等。
检查此以获取有关Route
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-3.1的更多详细信息
namespace Server.Controllers
{
[Route("file")]
[ApiController]
public class FileController : ControllerBase
{
[HttpGet("{driveName}/{folderName}/{fileName}")]
public async Task<IActionResult> GetFile(string driveName, string folderName, string fileName)
{
//if (!Directory.Exists(uri.Substring(0, uri.IndexOf("/"))))
//return File(System.IO.File.OpenRead("");
return Ok(uri.Substring(0, uri.IndexOf("/")));
}
}
}
推荐阅读
- javascript - 如何自定义单击到双击?js
- amazon-web-services - aws CloudWatch Log Query Insights 的转义字符
- python - 用 Python pandas 处理杂乱的数据
- javascript - 用 createSound() 创建声音;没有错误
- wpf - wpf devexpress gridcontrol 与单选按钮,将 IsEnabled 绑定传递给 celltemplate
- html - 属性文件中带有 Thymeleaf -UTF-8 的 Spring Boot CRUD 应用程序
- java - 将依赖于迭代器的方法更改为依赖于 ArrayList 或任何替代 (Java)
- karate - 如何使用空手道中的浏览器缓存在 chrome 中运行测试场景?
- django - Django 搜索向量 - 完全关键字不匹配
- java - 在 Spring 应用程序中发送 zip 文件作为多部分表单请求的一部分