从 ASP.NET MVC 中框架生成的 URL 中删除子文件夹?
Remove subfolder from framework-generated URLs in ASP.NET MVC?
我的应用程序位于子文件夹 wwwroot/site1
中,但我使用 URL 重写入站规则使其在域 www.mydomain.com
的根目录下可用。
这很好用,但问题是 ASP.NET MVC 生成 URLs with /site1
子文件夹,因为它不了解IIS级别的重写规则。
解决这个问题的一种方法是创建出站规则,但我认为必须有更优雅的方法。我更愿意在应用程序级别处理它。
有没有办法告诉 ASP.NET MVC 从所有生成的 URL 中删除 /dga
部分?特别是以下 URL 作者:
Html.ActionLink(...)
Url.Action(...)
return RedirectToAction(...)
当然我可以使用这样的扩展方法:
public static string ReplaceSubfolder(this string str) // and other types
{
return str.Replace("/site1", "");
}
Html.ActionLink(...).ReplaceSubfolder()
Url.Action(...).ReplaceSubfolder()
return RedirectToAction(...).ReplaceSubfolder()
但这更不优雅。我正在寻找一种方法来影响生成 URLs.
的路由
事实证明,使用 IIS 很容易做到这一点。只需为每个域创建一个单独的网站,选择应用程序所在的子文件夹(例如 wwwroot/site1
),设置绑定 (HTTP and/or HTTPS) 以收听您想要的域。创建网站时,Convert to application..
相关文件夹,所有内容都应显示在域的根目录中。
我的应用程序位于子文件夹 wwwroot/site1
中,但我使用 URL 重写入站规则使其在域 www.mydomain.com
的根目录下可用。
这很好用,但问题是 ASP.NET MVC 生成 URLs with /site1
子文件夹,因为它不了解IIS级别的重写规则。
解决这个问题的一种方法是创建出站规则,但我认为必须有更优雅的方法。我更愿意在应用程序级别处理它。
有没有办法告诉 ASP.NET MVC 从所有生成的 URL 中删除 /dga
部分?特别是以下 URL 作者:
Html.ActionLink(...)
Url.Action(...)
return RedirectToAction(...)
当然我可以使用这样的扩展方法:
public static string ReplaceSubfolder(this string str) // and other types
{
return str.Replace("/site1", "");
}
Html.ActionLink(...).ReplaceSubfolder()
Url.Action(...).ReplaceSubfolder()
return RedirectToAction(...).ReplaceSubfolder()
但这更不优雅。我正在寻找一种方法来影响生成 URLs.
的路由事实证明,使用 IIS 很容易做到这一点。只需为每个域创建一个单独的网站,选择应用程序所在的子文件夹(例如 wwwroot/site1
),设置绑定 (HTTP and/or HTTPS) 以收听您想要的域。创建网站时,Convert to application..
相关文件夹,所有内容都应显示在域的根目录中。