0

負荷分散された 3 つのサーバーで実行される MVC 3 サイトがあります。サーバーの1つで、このリンク:

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

正しくレンダリングされます。

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

他の 2 つの URL は間違っています。

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

どのサーバーにも MVC 3 がインストールされていないため、変更をプッシュするときに展開可能なアセンブリを含めます。他の場所ではかなり複雑なルートを使用しており、これらは3つのサーバーすべてで正常に機能するため、ルートに問題がないことはわかっています。また、ブラウザーにルートを手動で入力しても問題ありませんが、2 つの不正なサーバーのエリアでは機能しません。

問題は、サーバーのうちの 2 つがエリアについて何も知らないことのようです。これは非常に奇妙に思えます。他の誰かがこのような問題に遭遇しましたか?もしそうなら、彼らはこれを解決するために何をしましたか?

編集

3 台のサーバーはすべて Windows Server 2008 R2 DataCentre であり、IIS7 を実行しています

4

1 に答える 1

1

私と同僚は、2 つの不正なサーバーの一時 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>

なぜこれが起こったのかはっきりしないので、これは少し間違っているように感じます。でも、レンガの壁に頭をぶつけて 2 日もすれば大丈夫です。

この記事は、私が見つけたのは MVC のバグであることを示唆しているようです。問題が MVC 3 だけにあるのかどうかはわかりません。

編集

MVC 4に問題がある可能性があることを示唆するこのリンクを見つけました

于 2013-10-04T15:48:59.437 に答える