从ASP.NET MVC中的框架生成的URL中删除子文件夹?

时间:2015-11-12 12:23:35

标签: asp.net-mvc asp.net-mvc-5.2

我的应用程序位于子文件夹wwwroot/site1中,但我使用URL重写入站规则在域www.mydomain.com的根目录下可用。

这很好用,但问题是ASP.NET MVC使用 /site1子文件夹生成URL ,因为它不知道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()

但这更不优雅。我正在寻找一种方法来影响生成URL的路由。

1 个答案:

答案 0 :(得分:0)

事实证明,使用IIS非常容易。只需为每个域创建一个单独的Web站点,选择应用程序所在的子文件夹(例如wwwroot/site1),设置绑定(HTTP和/或HTTPS)以侦听所需的域。创建网站时,Convert to application..相关文件夹,并且所有内容都应显示在域的根目录中。