最近、VS2012/VS2010を実行しているPCにWindows7を新規インストールしました。このPCにプルして実行する前に、MVC3プロジェクトが正常に実行されました。プロジェクトは引き続きこのPCでコンパイルされ、スタジオ(2010または2012)でアプリを実行しながらサイト内を移動できますが、任意のビューの任意のフォームからPOSTを実行し、次のようなURLを使用してIDを渡そうとした場合:
<form id="ScriptForm" action="/MyApp/ControllerName/ActionName/@ViewBag.IDNumber" method="post">
...
</form>
...このエラーが発生しました。私はこれを修正するためにいくつかの掘り下げと遊びを行い、最終的には解決を試みるために次の手順を実行しました。
- コントロールパネルのWindowsコンポーネントフォームから実際にインストールされたASP.NET
- IISExpressを使用するようにアプリケーションを変更しました
さて、IIS Expressで実行するように変更すると、別のエラーが発生し始めました。
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is
temporarily unavailable.
Most likely causes:
The directory or file specified does not exist on the Web server.
The URL contains a typographical error.
A custom filter or module, such as URLScan, restricts access to the file.
Things you can try:
Create the content on the Web server.
Review the browser URL.
Check the failed request tracing log and see which module is calling SetStatus. For more information, click here.
Detailed Error Information:
Module IIS Web Core
Notification MapRequestHandler
Handler StaticFile
Error Code 0x80070002
Requested URL http://localhost:51596/MyApp/ControllerName/ActionName/1
Physical Path C:\CODE\MyApp\ControllerName\ActionName\1
Logon Method Anonymous
Logon User Anonymous
Request Tracing Directory C:\Users\cbarlow\Documents\IISExpress\TraceLogFiles\MYAPP
More Information:
This error means that the file or directory does not exist on the server. Create the file or directory and try the request again.
View more information »
これがルートであることを認識しておらず、明らかに存在しない物理ファイル(1.htmlなど)にURLを解決しようとしているようです。しかし、なぜ「MVCを実行」してルートを使用しないのでしょうか。これはglobal.asaxにあります。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
そして、私はそれをブレークポイントできるので、これが実行されていることを知っています。
仕様:Windows 7 | Visual Studio 2010/2012 | Microsoft MVC3 | IIS Express
私はこれらすべてのSO投稿を読みましたが、この状況には当てはまらないか、役に立たないようです(主に、コントローラーを介してページを読み込もうとしている実際のaspxページに当てはまるため):
パス'/'へのアクセスに使用されるHTTP動詞POSTは許可されていません
パスへのアクセスに使用されるHTTP動詞POSTは許可されていません
パス'/Membership /user/'へのアクセスに使用されるHTTP動詞POSTは許可されていません
パス'/Main/[オブジェクトオブジェクト]'へのアクセスに使用されるHTTP動詞POSTは許可されていません
パス'[mypath]'へのアクセスに使用されるHTTP動詞POSTは許可されていません
パス'/'へのアクセスに使用されるHTTP動詞POSTはFacebookアプリでは許可されていません
何か案は?