【发布时间】:2014-09-25 03:23:07
【问题描述】:
我目前正在开发一个 MVC4 项目,该项目正在部署到 IIS6 托管环境。
我正在使用Html.ActionLink() 在我的页面上生成链接。
例如:
@Html.ActionLink("Home Link", "Index", "Admin")
当我在本地运行应用程序时(即点击http://localhost:yyy),链接生成正常:
<a href="/Admin/Index">Home Link</a>
但是,当我在生产环境中运行它时:
<a href="">Home Link</a>
如您所见,该链接没有为其生成href。
我认为这可能是路由的问题,但是当我尝试在浏览器中访问页面时:admin/edit/45,或者使用自定义路由绑定的页面:sf/24,这两个都可以正常工作;他们将我引导到我期望的页面。
我很没有想法,不知道如何解决。
任何帮助,将不胜感激。
谢谢,
我为此添加了赏金,希望它可能有助于获得答案。我怀疑这个问题可以帮助其他人,因为我似乎没有做任何太开创性的事情。
24/09/14 更新
这是在 VS2010 SP1 中开发的,使用内置的 Web 服务器(Cassini?)。
然后我将发布(使用 Visual Studio 的内置选项)到运行 IIS6 的服务器。
目录结构包含类似于:
App_Start
Assets
Classes
Content
Controllers
DomainModel
Scripts
Services
SharedAssets
ViewModels
Views
(即其中没有任何内容与任何链接的名称匹配)。
除此之外,捆绑似乎还有效。例如:@Scripts.Render("~/bundles/adminjs")
使用这个 (VB) Razor:
@Html.ActionLink("View", "Display", "Form", New With { .id = 72 }, Nothing)
<br />
@Html.RouteLink("View", "Default", new with { .controller = "Form", .action = "Display", .id = 72 })
我得到以下输出..
在 VS10/Chrome(本地)中:
<a href="/Form/Display/72">View</a>
<br>
<a href="/Form/Display/72">View</a>
在 IIS6/Chrome(服务器)中:
<a href="">View</a>
<br>
<a href="">View</a>
..增加了它不接路线的神秘感..
【问题讨论】:
-
您是否将站点托管为虚拟目录?
-
不,该站点作为 IIS 中的应用程序托管
-
这是根站点吗?
-
我之前也遇到过类似的问题,您的部署文件夹中的文件结构是什么样的?
标签: html asp.net-mvc iis razor