我目前正在开发一个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>
..增加了更多的神秘感,没有拿起路线..
答案 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。