MVC无法使用前导..退出顶级目录

时间:2013-12-20 08:22:53

标签: asp.net-mvc-3 url-rewriting url-routing

使用ASP.NET MVC 3构建网站。

按如下方式发布:在网站下创建虚拟目录,将MVC应用程序复制到此文件夹并将其转换为应用程序。所以网站结构看起来像

enter image description here

让UrlRewite如下所示,以便http://www.example.com在不更改网址的情况下重写为http://www.example.com/travel

<rule name="rewrite rule for home page" enabled="true" stopProcessing="false">
 <match url="^$" />
 <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
 <action type="Rewrite" url="/home/index" appendQueryString="false" />
</rule>
<rule name="rewrite rule for virtual path" enabled="true">
 <match url="^[\w-/\.]+$" />
 <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
 <action type="Rewrite" url="/travel/{R:0}" appendQueryString="false" />
</rule>

然后我的问题就出来了。

script src =“@ Url.Content (”〜/ Content / Js / Index.js“)”type =“text / javascript”&gt;

Url.RouteUrl ( “Lvxingshe”)

Url.RouteUrl (“ListOfCity”,新{locationname =“LA”})

script src =“@ Url.Content (”/ Content / Js / Index.js“)”type =“text / javascript”&gt;

我的家/索引视图中有上面的代码。他们抛出了例外:

无法使用前导..退出顶级目录。

1 个答案:

答案 0 :(得分:-1)

在我的情况下,在路由配置中创建额外规则解决了问题。

得到这条规则:

<rule name="site/company/CompanyId-CompanyName/" stopProcessing="true">
    <match url="^company/([0-9]+)-([^/^&amp;]+)(/{0,1})$" />
    <action type="Rewrite" url="employer/{R:1}" />
</rule>

在行动网址中你应该使用这个额外的规则。

// for urlRewrite
routes.MapRoute("Employer", 
    "employer/{empid}", 
    new { controller = "Employer", action = "Index" }, 
    new { empid = @"\d+" }
);