1

最近、mvc2 で .net 4 に変換したハイブリッド asp.net Web フォーム/mvc アプリケーションがあります。そのアプリケーションを IIS 7.5 (Windows 7) で実行するようにセットアップしました。サイトの Web フォーム部分は正常に動作していますが、MVC 部分は正常に動作していません。ルーティング エンジンを通過する必要があるページにアクセスしようとするたびに、

HTTP エラー 404.0 - 見つかりません
お探しのリソースは削除されているか、名前が変更されているか、一時的に利用できません。
モジュール IIS Web コア
通知 MapRequestHandler
ハンドラ StaticFile
エラー コード 0x80070002

私は VS2010 を介してこの Web サイトをデバッグしています (そのため、Cassini の代わりに IIS を使用するようにセットアップしました)。Application_Start 関数にブレークポイントを設定すると、ヒットしないため、ルートが登録されません。aspx ページのコード ビハインドの 1 つで Page_Load 関数にブレーク ポイントを配置すると、ヒットします。そのため、ルートが登録されていないことが問題のようです。

私は何が欠けていますか?

4

3 に答える 3

1

ASP.NET MVC の経験から、IIS が正しく機能するにはページが必要であることDefault.aspxがわかりました。ASP.NET MVC 1 テンプレートに含まれていたページを使用しています。残念ながら、ASP.NET MVC 2 にはこのページが含まれていないため (私の知る限り)、プロジェクトに次を追加する必要があります。

デフォルト.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="YourNamespace._Default" %>

<%-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --%>

Default.aspx.cs:

using System.Web;
using System.Web.Mvc;
using System.Web.UI;

namespace YourNamespace
{
    public partial class _Default : Page
    {
        public void Page_Load(object sender, System.EventArgs e)
        {
            // Change the current path so that the Routing handler can correctly interpret
            // the request, then restore the original path so that the OutputCache module
            // can correctly process the response (if caching is enabled).

            string originalPath = Request.Path;
            HttpContext.Current.RewritePath(Request.ApplicationPath, false);
            IHttpHandler httpHandler = new MvcHttpHandler();
            httpHandler.ProcessRequest(HttpContext.Current);
            HttpContext.Current.RewritePath(originalPath, false);
        }
    }
}
于 2010-08-30T02:40:18.787 に答える
0

Global.asax イベントが発生しないという同様の問題についてどこかで読んだことを覚えています。Global.asax ファイルを削除して再度追加してみてください (必要なルート コードを再度追加することを忘れないでください)。

于 2010-05-18T06:06:23.927 に答える