我最近刚刚在运行 VS2012/VS2010 的 PC 上全新安装了 Windows 7。我有一个 MVC3 项目,在我将它拉到这台 PC 上运行之前,它运行得很好。该项目仍在这台 PC 上编译,我可以在工作室(2010 或 2012)中运行应用程序时浏览我的网站,但是当我尝试从任何视图中的任何表单发布并通过 URL 传递 ID 时,如下所示:
<form id="ScriptForm" action="/MyApp/ControllerName/ActionName/@ViewBag.IDNumber" method="post">
...
</form>
...我收到了这个错误。我做了一些挖掘和尝试来解决这个问题,最终采取了这些步骤来尝试解决:
- 实际通过控制面板中的 Windows 组件表单安装了 ASP.NET
- 将应用程序更改为使用 IIS Express
好吧,当我将其更改为在 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 »
就好像它没有认识到这是一条路由,并试图将 URL 解析为一个显然不存在的物理文件(如 1.html)。但是为什么它不“做 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 | 视觉工作室 2010/2012 | 微软 MVC3 | IIS 快递
我已经阅读了所有这些 SO 帖子,似乎没有一个适用于这种情况或没有帮助(主要是因为它们适用于实际的 aspx 页面,我试图通过控制器加载页面):
不允许使用 HTTP 动词 POST 访问路径“/Membership/user/”
不允许使用 HTTP 动词 POST 访问路径“/Main/[object Object]”
不允许使用用于访问路径“[我的路径]”的 HTTP 动词 POST
Facebook 应用程序中不允许用于访问路径“/”的 HTTP 动词 POST
有任何想法吗?