2017-03-23 6 views
0

Windows 7のVisual Studio 2013で作成されたASP.NETプロジェクトをWindows Server 2008のIIS 6.0に移動しようとしていますが、ナビゲーションに問題がありますページ間。 Visual StudioでIISでのASP.NETナビゲーションが.aspxファイルの代わりにディレクトリに移動する

、私は、アプリケーションがこのコマンドを使用してホームページに起動し、ログインページから移動します。

Response.Redirect("~/Home.aspx"); 

のVisual Studioで正しくHome.aspxファイルをロードします。しかし、IISでこれを実行すると、代わりにHome.aspxファイルではなく、ホームフォルダを検索しようとするため、Home.aspxファイルをロードしないホームディレクトリを作成しない限り404エラーが返されます私はそれをディレクトリにコピーします。

この相違点にはどのような原因が考えられますか?IISでHome.aspxページを実行するアプリケーションを取得するにはどうすればよいですか。

+0

IISであなたのサイトをチェックしてみてくださいが、「統合パイプライン」モードに設定されていません。 IIS6では代わりに 'Classic'モードになっていました。非実動サーバーで試してみてください。 http://stackoverflow.com/questions/716049/what-is-the-difference-between-classic-and-integrated-pipeline-mode-in-iis7 – scgough

答えて

0

ルーティングの問題のようです。 VS 2013 WebプロジェクトはASP.NET MVC Webサイトとして作成されましたか?それはいくつかのWebFormsのaspxページを追加したかもしれませんが、MVCとWebFormsの両方のページを持つためには、App_Start/RouterConfig.csのルーティング設定を調整する必要があります:

このコードをメソッドRegisterRoutes()RouterConfig.csで、その後、あなたはHome.aspxを打つことができるようになります:

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

あなたが他のすべてのページのためのMVCルーティングを維持しながら、唯一Home.aspxを許可する場合は、あなたがする必要がありますroutes.MapRouteメソッド呼び出しのデフォルト値を変更します。

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "<Some Other Controller Name>", action = "Index", id = UrlParameter.Optional } 
     ); 

あなたが何か他のものへの「ホーム」からデフォルトルートのコントローラ名を変更する場合、Home.aspxは正常にロードする必要があります。

+0

あなたが言及したファイルを見ましたが、RegisterRoutesのコード( )あなたが言ったこととは違う: 'var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; routes.EnableFriendlyUrls(settings); ' – Robert

関連する問題