Html.ActionLink无法在生产环境中工作

时间:2014-09-11 07:56:08

标签: html asp.net-mvc iis razor

我目前正在开发一个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>

..增加了更多的神秘感,没有拿起路线..

2 个答案:

答案 0 :(得分:1)

您可能需要查看此SO,看看您是否遇到了有关路由和默认路由定义方式的相同问题。

答案 1 :(得分:0)

IIS 6不支持具有集成模式的应用程序池。 Here is a guide如何让IIS将请求路由到ASP.NET MVC应用程序。 More guiding here.

Here is a great answer比较两种模式,Classic和Integrated。