【问题标题】:MVC: "The incoming request does not match any route." - with a default requestMVC:“传入的请求不匹配任何路由。” - 带有默认请求
【发布时间】:2010-12-06 02:10:10
【问题描述】:

我只是有时会收到此错误(显然是随机的,尽管我知道计算机中确实没有这样的事情)。

我在 VS 2008 中的 MVC(第 1 版)站点上工作。该机器运行带有 IIS 7 的 Windows 7,但此实例在 VS(Cassini?)内置的 Web 服务器下运行。当我按 F5 开始运行它时,有时会在 Default.aspx.cs 的 Page_Load 方法的第 4 行得到一个异常陷阱:

httpHandler.ProcessRequest(HttpContext.Current);

异常方法是: 传入的请求不匹配任何路由。

检查HttpContext.Current.Request 对象显示路径为“/”,rawUrl 为“/Default.aspx?” - 即您对网站的正常空请求。

MapRoutes 例程几乎是标准的,除了几个 IgnoreRoutes 行(忽略“pics/{*imgfile}”,忽略“{*favicon}”)。 Application_Start 例程具有 StructureMap 的配置,以及在调用 RegisterRoutes 之前对 SetControllerFactory 的调用,但在其他方面它是标准的。

通常,如果我重新启动 VS,问题就会消失。 (而且几乎总是在我重新启动机器时)。

有什么线索吗?

谢谢。

【问题讨论】:

  • 我收集了更多信息,并找出了发生这种情况的情况(毕竟这不是随机的)。但我仍然没有得到连接。如果我尝试在 VS 中调试程序并且 SQL 服务器未在我的机器上运行,则程序会在 StructureMap 中引发异常,这是可以理解的并且是可以预料的。如果我停止调试器,启动 SQL 服务器,然后重新运行程序,就会出现这些错误。我仍然没有得到连接,但至少我知道如何防止它发生(关闭 VS,启动 SQL 服务器,然后重新启动)。
  • 戴夫 - 你有没有弄清楚是什么原因造成的?我也有同样的事情发生在我身上。我在 Global.asax:Application_Start() 中设置了一个断点 - 没有命中断点。

标签: asp.net-mvc url-routing


【解决方案1】:

对不起,我的英语不好......

我也有这个问题!调用路由的方法 Application_Start 莫名其妙地在 Global.asax 中消失了!!

vb.net:

Sub Application_Start()
    RegisterRoutes(RouteTable.Routes)
End Sub

如果此方法不存在,则将此方法放在 global.asax 中

【讨论】:

    【解决方案2】:

    设置默认页面。 asp.net 中的 F5 将启动到选择的任何页面。但是,由于在 MVC 中,您的 View 可能有也可能没有关联的控制器函数,它可能会尝试调用不存在的操作。打开您的项目属性并将调试起始页设置为您的站点主控制器操作。

    【讨论】:

    • Russell,感谢您抽出宝贵时间回复。有一个默认页面集,它是运行并引发异常的默认页面 (Default.aspx.cs) 的标准代码隐藏。有一个启动项目集,并且所有动作都存在,尤其是默认动作(controller=home,action=index)。由于这大部分时间都在运行并且只是间歇性地失败,因此很难看出这可能是什么问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多