【问题标题】:Web API 404 File or Directory not Found for "root" routes未找到“根”路由的 Web API 404 文件或目录
【发布时间】:2014-07-03 00:50:35
【问题描述】:

我正在开发一个 RESTful Web api 服务。它是 web api v.1,而不是 v.2。我也在 Visual Studio 2010 SP1 上进行开发。我已经为 VS2010 SP1 安装了 MVC 4。

请理解并记住,升级到较新版本的 VS 或 Web Api 2 不是一种选择。

我有以下问题发生 Windows 更新后

当我尝试以这种方式使用我的 RESTful api 时......

http://url.com/documents/(获取所有文件)我收到以下错误...

找不到资源。

描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。

这是堆栈跟踪。

[HttpException]: File does not exist.   at System.Web.StaticFileHandler.GetFileInfo(String virtualPathWithPathInfo, String physicalPath, HttpResponse response)   at System.Web.StaticFileHandler.ProcessRequestInternal(HttpContext context, String overrideVirtualPath)   at System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state)   at system.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

如果我直接指定动作名称,它会起作用。比如……

http://url.com/documents/get(获取所有文档)或

http://url.com/documents/7(获取文档 id=7。

仅当您使用其默认名称调用它时它才会失败。我已经在这里阅读过类似的情况,并且尝试遵循他们的解决方案,但它们对我不起作用。

现在,我知道这 不是“Web api 路由”问题,因为我实际上得到了 .net 默认异常页面 html 标记(我正在使用 Postman 来测试我的 Web 服务)。当我强制执行“路由问题”时,我会收到 JSON 错误描述,这意味着控制器实际上是在管道中创建并返回了响应。

另外,我有一个继承自 DelegatingHandler 的自定义文件 (SecurityHandler)。每次调用 api 时,该文件几乎首先在管道中执行。甚至在实际的控制器之前。好吧,当我收到错误时,永远不会调用此文件,这向我确认了“网络服务器”(VS 开发服务器或 IIS 7)是引发异常的那个。

我已经用尽了在这里找到的每一个解决方案。将我的 web.config 更改为多个处理程序配置,为 VS2010 重新安装 MVC 4,创建了一个全新的项目......所有这些努力都没有显示任何结果。

就像我说的那样,在我的电脑从 Windows 更新重新启动之前,这一切都很好,但是......为什么它在服务器上也失败了?在错误开始发生后,我确实将我的 api 部署到了服务器。

谢谢。

【问题讨论】:

    标签: visual-studio-2010 asp.net-mvc-4 iis-7 asp.net-web-api


    【解决方案1】:

    问题不在于 Web API(与它的版本或 Visual Studio 2010 无关),而是静态文件处理程序试图提供服务但失败了。

    替代方案: 0. 您的站点中有文档文件夹吗?摆脱它。 1.删​​除目录浏览的静态文件处理程序并重新添加。 2. 使用 RAMMFAR(不推荐)

    【讨论】:

    • 一晒,好像是“路由顺序问题”。以前无法理解它是如何工作的(我认为是你自己首先帮助我把它弄明白了),但后来它坏了。我将路由映射器从最具体的切换到较少的路由映射器,它再次工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2013-06-02
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多