首页 > 解决方案 > 如何在 ASP.NET Core 控制器上允许 /(斜线)?

问题描述

我正在尝试使用 ASP.NET 我想在 url 中为 MVC 控制器上的各种地址添加斜杠。这是我正在考虑的网址:

只是想知道我怎样才能允许/在控制器上。这是我制作的一些代码(我认为这不相关)

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("/")));
        }
    }
}

标签: c#asp.net-mvcasp.net-core

解决方案


[Route("file")]在控制器上使用。

[HttpGet("{driveName}/{folderName}/{fileName}")]在上面添加action。还将动作参数更新为GetFile(string driveName, string folderName, string fileName).

表示forlocalhost/file/a/d/aaa.zip?key=randomkeystring之后file/会映射adriveName路由参数,映射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("/")));
        }
    }
}

推荐阅读