0

「localhost/mvcapplication1」の下のIIS 5.1の環境にアプリケーションがあります

ルーティング構成は次のようなものです。

    routes.MapRoute("mvc-default", "{controller}.mvc/{action}/{id}"
        , new { controller = "Home", action = "Index", id = (string)null });


    routes.MapRoute("Root", ""
        , new { controller = "Home", action = "Index", id = (string)null });

ページが「ルート」経由でルーティングされると、ビューのリンクは

http://localhost/mvcapplication1/MvcApplication1/Product.mvc

, which obviously it doesn't exist. However when the first "mvc-default" is used, it works well.

If the application is hosted under http://......./ would also work well.

any hints about how to solve it?

Thanks.

4

3 に答える 3

2

ルーティング ルール "{controller}.mvc/{action}/{id}" を設定したため、404 エラーが発生しました。これは明らかにコントローラー名の後に .mvc 拡張子を追加しますが、"" ルーティング ルールは追加しません。構成されていない IIS を使用しているため、優先されます。

IIS を構成せずに修正するには、.mvc を .aspx、.asmx など、現在 ASP.Net が処理するものに変更します。
IIS の修正が必要な場合は、以下のリンクにアクセスし、指示に従い、.mvc 拡張子を削除してください。

ASP.Net
Phil Haack のブログ
Google で調べれば、さらに多くの記事を見つけることができます。

于 2009-02-01T13:06:49.337 に答える
0

多分これはうまくいきます:
変更:

HttpContext.Current.RewritePath(Request.ApplicationPath);

HttpContext.Current.RewritePath(Request.ApplicationPath, false);

default.aspx.cs (または default.aspx.vb) 内

于 2009-02-04T10:42:09.707 に答える
0

1年遅れですが、これは他の誰かを助けるかもしれません。IIS6 を使用しているため、同じ問題がありました。これらの 2 つのエントリをルーティング構成にリストされている最後の 2 つとして機能させることができました。

            routes.MapRoute(null, "{controller}.aspx/{action}");
        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}.aspx/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

「.aspx」を「.mvc」または必要なものに変更します。

于 2010-08-30T12:53:20.313 に答える