2013-10-03 26 views
0

我有一个跨三个负载均衡服务器运行的MVC 3站点。在其中一台服务器上,此链接:ActionLink没有正确格式化区域的URL

@Html.ActionLink("Admin", "Index", new { area = "Admin", controller = "Home" }) 

得到正确呈现。

http://my1.mvcsite.com/Admin/Home 

另外两个URL出错了。

http://my2.mvcsite.com/?area=Admin 

没有一个服务器上安装了MVC 3,所以当我推送更改时,我包含可部署的程序集。我知道这不是路由问题,因为在其他地方,我使用相当复杂的路由,并且在所有三台服务器上都能正常工作。同时在浏览器中手动键入路由可以正常工作,但不适用于两台流氓服务器上的区域。

这个问题似乎是两个服务器不知道有关区域的任何信息,这似乎很奇怪。是否有其他人遇到过这样的问题?如果是的话,他们做了什么来补救?

编辑

三台服务器在Windows Server 2008 R2数据中心和运行IIS7

+0

为什么会有不同的子域? –

+0

这三台服务器中的每一台均服务于my.mvcsite.com。使用my1.mvcsite.com是知道我从服务器1获得服务的一种方式,就是这样。 –

+0

相同版本的IIS和OS? –

回答

1

我和同事已经从两个流氓去除ASP.NET临时文件这个文件解决了这个问题服务器。

MVC-AreaRegistrationTypeCache.xml 

这是在这里找到:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\06304885\908d56a6\UserCache 

在当地区没有映射也发现XML是如下的服务器:

<?xml version="1.0" encoding="UTF-8"?> 
<!--This file is automatically generated. Please do not modify the contents of this file.--> 
<typeCache mvcVersionId="3cff62e5-ef21-4e58-897f-d0f1eafd3beb" lastModified="10/09/2013 15:10:21"/> 

删除这个文件,再启动应用程序池,使其重新创建,然后区域工作。

现在,该文件:

<?xml version="1.0" encoding="utf-8"?> 
<!--This file is automatically generated. Please do not modify the contents of this file.--> 
<typeCache lastModified="04/10/2013 15:45:02" mvcVersionId="3cff62e5-ef21-4e58-897f-d0f1eafd3beb"> 
    <assembly name="MyMVCSite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"> 
    <module versionId="a3ce0d47-e370-4176-a07b-76aec3a3c25c"> 
    <type>MyMVCSite.Areas.Admin.AdminAreaRegistration</type> 
</module> 

这感觉有点错,我不是一定的,为什么出现这种情况;但是在两天的时间里,我的头撞到了一堵砖墙上。

This article seems to suggest that what I've found is a bug with MVC.我不知道这个问题是否仅适用于MVC 3。

编辑

Just found this link that suggests there might be a problem with MVC 4