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
?我认为这是一个单一的应用程序。它只有一个子文件夹作为根目录。不,那将是一个子应用程序。它们是否存在于同一文件夹层次结构中并不重要。他们仍然是独立的应用程序。我认为他在一个应用程序中重定向,但他已经将网站设置为子应用程序。这就是他有这个问题的原因。这会起作用,但当他将网站移到其他地方时,它会崩溃。