1

新しいC#MVCプログラムを開始しました。私は仕事のこれらのトンを持っているが、これはしないと私は非常に理由を把握することはできません。それは私にこのエラーが発生しますMVCルーティングが仮想ディレクトリにルーティングしようとしています

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "Default", 
     url: "{action}", 
     defaults: new { controller = "Account", action = "LogOn" } 
    ); 

} 

:私の他のサイトと同様に

System.Web.HttpException (0x80004005): The controller for path '/VIRTUALDIRECTORY' was not found or does not implement IController. 
    at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) 
    at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) 
    at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) 
    at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

が、これはビジュアル・スタジオによる仮想ディレクトリで設定されています。具体的には、「ページを開かないでください」、「ローカルIIS」、一般的なURLだけを設定しています。http://localhost/VIRTUALDIRECTORY

「作成」をクリックすると、IISにVIRTUALDIRECTORYが表示されます)を他の仮想ディレクトリと同じ設定にする必要があります。

このプログラムとの唯一の違いは、基本的にVB.NET MVCプログラムをC#にコピーしていることです。そこで私は空のC#MVCプログラムを作成し、クラスをコピーして変換しました。 (明らかに)コンパイルエラーはありませんが、私はそれが原因であると分かっていない設定やものがあると確信しています。

誰かがこれを解決する方法を知っていますか?

ナゲット経由で最新のMVC(5.2.3)を参照しています。

+0

おそらく問題はありませんが、「デフォルト」ルートは追加の2つのルートを処理します。さらに、「デフォルト」ルートが最初であるため、他の2つは決して再生されません。 –

+0

ええと、私はそれを働かせようとしていたので、他の2つを追加しました。 –

+0

Chrisが正しいです。ルーティングが正しく設定されていません。ルートは、最も具体的なものから最も具体的でないものの順に並べる必要があります。この場合、最も具体的なルートは 'DefaultAccount'です。他の2つのルートは現在矛盾しています。それらをより具体的にするには、1)URLにすでに指定されている場合はデフォルト値を取り出し、必要に応じて2)特定の場合にのみ一致するように制約を追加する3)URLにリテラルを追加して一致させる場合によっては。 「ASP.NETルーティング」(https://msdn.microsoft.com/en-us/library/cc668201.aspx)を参照してください。 – NightOwl888

答えて

0

これが他の誰かにも適用されるかどうかはわかりませんが、問題は私のところで骨頭の問題でした。

私はコントローラを複数の「部分」クラスに分割していましたが、コード変換プロセスでは「公開」とマークされていませんでした。

Doh!