【问题标题】:VB.NET web api returns "404 Not Found"VB.NET web api 返回“404 Not Found”
【发布时间】:2014-07-28 18:44:21
【问题描述】:

大家下午好。这是我在这里的第一篇文章。我对在 .NET 中开发 Web 服务也有些陌生,尽管我已经开发网站和应用程序很长时间了。我刚开始一份新工作,这是我的第一个项目。

我正在尝试创建一个从 iPad 应用程序调用的 Web 服务。该服务应接受 JSON 对象,使用 JSON 中的参数查询数据库,然后根据结果返回 JSON 字符串。我遵循了本教程:http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api。以下是相关内容:

  • 我使用的是 Visual Studio 2010 SP1
  • 我们在这里使用 VB.NET(我询问了 C# 并遭到严厉拒绝)
  • 我已安装并正在使用 MVC 4
  • 服务器是远程的,运行 IIS 6
  • 它运行的是 .NET 4.0 框架
  • 我的项目位于正确的池中并配置为 .NET 4.0
  • 我的项目有通配符脚本映射
  • 在我的应用程序中,Application_Start 方法的顺序正确
  • 我什至添加了 MVC“可部署的依赖项”,但我可能不需要它们

这是我对服务的 AJAX 调用:

    var uri = 'api/status';

    $(document).ready(function () {
        $.ajax({
            type: "GET",
            url: uri,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: {},
            success: function (result) {
                console.log(result);
            },
            error: function (req, status, error) {
                console.log("req = " + req + ", status = " + status + ", error = " + error);
            }
        });         


    });

这是我的控制器,名为 StatusController:

Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports System.Web.Http

Namespace FadecStatus.Controllers
    Public Class StatusController
        Inherits ApiController
        Private engines As FadecStatus.Models.Engine() = New FadecStatus.Models.Engine() {New FadecStatus.Models.Engine() With { _
            .name = "PC-24-0001_2014-04-30_05-55.file", _
            .size = "120KB", _
            .uploadDate = "04/30/2014", _
            .status = "Sent" _
        }}

        Public Function GetAllEngines() As IEnumerable(Of FadecStatus.Models.Engine)
            Return engines
        End Function

    End Class
End Namespace

在所有这些之后,我在尝试访问该服务时仍然收到“404 Not Found”错误。在一周的大部分时间里,我一直在研究和试验,包括探索一些遗留格式。我认为这是我想做的最新和最好的选择。任何建议将不胜感激。谢谢。

【问题讨论】:

  • 该服务可以在您自己的机器上运行吗?
  • 直到现在我还没有尝试在本地运行它。当我选择在浏览器中查看时,我收到以下错误消息:“无法加载文件或程序集 'DotNetOpenAuth.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246' 或其依赖项之一。系统找不到指定的文件。”我找到了一些关于此的信息,谈论引用和程序集,但我对 .NET 和 VS 的了解还不够,无法进行适当的更正。我的项目目前由一个 HTML 页面组成,该页面对我的服务进行 AJAX 调用(加载时),它有一个方法 - 就是这样。
  • 我做了更多的挖掘工作,我决定删除 Deployable Dependencies。它们似乎是上述错误的根源,我几乎可以肯定我不需要它们。结果,当我现在尝试在本地运行应用程序时,我的浏览器中显示“服务器太忙”错误。
  • 我花了很多时间试图让我的应用程序在本地显示,直到我最终意识到问题是我的 IE 版本 (8),或者“在浏览器中查看”功能混乱向上。我在 Firefox 中本地查看了该站点,终于可以看到我的 HTML,但控制台出现 500 内部服务器错误。我将自定义元素添加到应用程序配置面板中的参考表中,但这并没有改变任何东西。如果有人有任何想法,提供帮助。我开始失去希望了。

标签: asp.net-mvc vb.net asp.net-mvc-4 asp.net-web-api


【解决方案1】:

我终于明白了。涉及两个步骤:

首先,我无法在调试模式下运行我的应用程序。浏览器将打开,然后几乎立即关闭,并出现“拒绝访问”错误。我发现 MVC 项目在 Views 文件夹中创建了第二个 web.config 文件。根 web.config 文件有以下部分允许匿名访问,我复制到 Views 文件夹中的 web.config 文件:

<security>
  <authentication>
    <anonymousAuthentication userName="" />
  </authentication>
</security>

此后我收到“服务器太忙”错误,但在我的代码中插入断点允许本地调试半一致地工作。

现在本地调试已修复,我的第二步是修复开发站点。此时,我能够确定问题出在远程服务器上的 .NET 配置上。我最初检查了这个,但显然我没有做对。 This post 解决了我的问题。感谢不屈不挠!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2017-12-27
    • 2016-03-16
    • 2021-09-11
    • 2023-03-05
    • 2016-02-29
    • 1970-01-01
    相关资源
    最近更新 更多