質問

Global.asax.csに次のものがあります

routes.MapRoute(
    "Arrival",
    "{partnerID}",
    new { controller = "Search", action = "Index", partnerID="1000" }
);

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);

私のSearchControllerは次のようになります

public class SearchController : Controller
{
    // Display search results
    public ActionResult Index(int partnerID)
    {
        ViewData["partnerID"] = partnerID;
        return View();
    }
}

およびIndex.aspxは、現時点ではViewData [" partnerID"]を単に示しています。

Windows XPのIISにTestという仮想ディレクトリをセットアップしています。

ブラウザで http:// localhost / Test / を指定すると、期待どおり1000が表示されます。ただし、 http:// localhost / Test / 1000 を試すと、ページが見つかりませんというエラーが表示されます。アイデアはありますか?

仮想ディレクトリでMVCを実行するための特別な考慮事項はありますか?

役に立ちましたか?

解決

IIS 5.1は、Testという名前のフォルダーの下にある1000という名前のフォルダーを検索するようにURLを解釈します。なぜそうなのですか?

  

これはIIS 6のみが原因で発生します   が表示されたときにASP.NETを呼び出します   “ファイル名拡張子”のURL   aspnet_isapi.dll(これは   担当するC / C ++ ISAPIフィルター   ASP.NETを呼び出します)。ルーティングは   呼び出された.NET IHttpModule   UrlRoutingModule、それは取得しません   ASP.NET自体が取得しない限り呼び出される   呼び出されたときのみ発生します   aspnet_isapi.dllが呼び出されます。   .aspxが存在する場合にのみ発生します   URL。したがって、.aspx、no   UrlRoutingModule、したがって404。

最も簡単な解決策は次のとおりです。

  

.aspxを使用する必要がない場合   URL、ルーティングを通過するだけ   構成、.aspxを前に追加   各パターンのスラッシュ。にとって   例、使用   {controller} .aspx / {action} / {id}または   myapp.aspx / {controller} / {action} / {id}。   .aspxを中に入れないでください   中括弧パラメータ名、または   ‘デフォルト’値は、tではないためです。   本当にコントローラー名の一部-   IISを満たすためのURLにのみ含まれています。

出典: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

他のヒント

Windows XPでこれを行う場合、IIS 5.1を使用しています。要求を処理するにはASP.Netを取得する必要があります。ルートに拡張機能({controller} .mvc / {action} / {id})を追加し、その拡張機能をASP.Netにマッピングするか、すべての要求をASP.Netにマッピングする必要があります。 http:// localhost / Test は、MVCプロジェクトで特別に処理されるDefault.aspxに移動するため機能します。

さらに、 http:// localhost / Test / Search / Index / 1000を指定する必要があります。 IDを指定する場合、コントローラーとアクションはオプションではありません。

アプリケーションで仮想ディレクトリを使用する場合、いくつかの考慮事項があります。

特に、アプリが同じサーバー上にある場合でも、ほとんどのブラウザーは、ある仮想ディレクトリから別の仮想ディレクトリに送信されたCookieを送信しません。

仮想パスを設定してみてください:mvcプロジェクト、プロパティ、Webタブを右クリックして、適切な場所を入力します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top