C# 如何获取重定向到使用相对路径的操作

C# 如何获取重定向到使用相对路径的操作,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,我使用redirectoaction重定向到另一个视图,但是我使用的是IIS中某个站点中的应用程序,因此有一个前缀必须指向路径 当我执行RedirectToAction时,它只是在根目录上重定向 我需要它尊重当前路径并沿着这些路线重定向 例如: 我在https://localhost:8085/app/custompath/controller1/action 我打电话 返回重定向到操作(“控制器2”、“操作”) 我被重定向到 https://localhost:8085/controller2

我使用
redirectoaction
重定向到另一个视图,但是我使用的是IIS中某个站点中的应用程序,因此有一个前缀必须指向路径

当我执行
RedirectToAction
时,它只是在根目录上重定向

我需要它尊重当前路径并沿着这些路线重定向

例如:

我在
https://localhost:8085/app/custompath/controller1/action

我打电话
返回重定向到操作(“控制器2”、“操作”)

我被重定向到

https://localhost:8085/controller2/action

而不是


https://localhost:8085/app/custompath/controller2/action

重定向到操作
,或任何类似的方法,这些方法允许您基于路由信息(如控制器、操作、名称等)生成URL。仅适用于上下文中当前运行的应用程序。不能使用它们为其他应用程序中的路由生成URL


您可以简单地将
重定向
与字符串URL一起使用,但您可以自行生成所需的URL。典型的方法是在应用程序设置中为外部应用程序设置基本路径。

如果在
启动.cs中有类似的内容:

app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");

            routes.MapRoute(
                name: "custom",
                template: "app/custompath/{controller=Home}/{action=Index}");
        });
然后可以执行以下操作以重定向:

var url = Url.RouteUrl("custom", new { controller = "controller2", action = "action" });
return Redirect(url);

顺便说一句,如果需要的话.NET Core有内置功能。

什么是custompath?ASP.NET MVC应该从哪里知道它。我认为您应该在
RouteConfig.cs
中编辑您的默认路线,并将自定义路径添加到您的路线中。这不会破坏路线吗?我在IIS中使用URLEWRITE,所以MVC在查找视图时不需要自定义路径。但是为什么没有重写规则来重写
https://localhost:8085/controller2/action
https://localhost:8085/app/custompath/controller2/action
?我认为这是一个单一的应用程序。它只有一个子文件夹作为根目录。不,那将是一个子应用程序。它们是否存在于同一文件夹层次结构中并不重要。他们仍然是独立的应用程序。我认为他在一个应用程序中重定向,但他已经将网站设置为子应用程序。这就是他有这个问题的原因。这会起作用,但当他将网站移到其他地方时,它会崩溃。