Cassiniで開発およびテストしたmvcアプリを持っています。 GoDaddyの私のサイトにデプロイしました。デフォルトのページが表示されます。クリックしてログインすると、404が表示されます。
私はそこでIIS 7の下で走っているので、これは予想外です。私のルートはかなり明白です:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Public", action = "Index", id = "" }
);
routes.MapRoute(
"Report1",
"Report/{action}/{start}/{end}",
new { controller = "Report", action = "Index" }
);
routes.MapRoute(
"Report2",
"Report/{action}/{start}/{end}/{idList}",
new { controller = "Report", action = "Index" }
);
何が起こっているのか、またはこれをトラブルシューティングする方法はありますか?
IIS7で実行していますか統合モード?
IIS7のクラシックモードはnot拡張子のないURLをASP.NETに自動的にマップします(IIS6と同様)。
また、あなたのWeb.config
<system.webServer>
タグが正しく構成されている。
runAllManagedModulesForAllRequestsを使用しないでください 。 IIS画像などのリソースを処理させます。
<system.webServer> <!-- Rather do NOT use this -->
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
代わりに、MVCルーティングモジュールを追加してください
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
すべてを試しましたが、機能させるには、このようにWeb構成を設定する必要がありました。
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
同じ問題が発生しました。コントローラー、web.config、その他のクラスをアップロードしましたが、binフォルダーをアップロードするのを忘れました。
Binフォルダーをアップロードした後、うまくいきました!