【问题标题】:Web API - Failed to load resource: the server responded with a status of 404Web API - 加载资源失败:服务器响应状态为 404
【发布时间】:2014-06-08 08:15:51
【问题描述】:

我正在使用 web api 开发 angular js。

我有这个控制器:Controller/MasterController,这在我的 WebApi 配置中:

HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

我从 Global.asax,Application_Start 事件中调用此函数。

我像这样从 service.js 调用我的 web api:

var service = function ($http) {
    var _$http = $http;
    self = this;
    self.getMenuItems = function () {
        var promise = _$http({
            method: "GET",
            url: 'api/Master'
        }).success(function (data, status, headers, config) {

        }).error(function (data, status, headers, config) {

        });
        return promise;
    };

在调试模式下,我看到我到达了这个区域。 我在 chrome 控制台中收到此错误: “加载资源失败:服务器响应状态为 404”

这就是他想要达到的目标:http://localhost:12345/api/Master

另外,我尝试通过浏览器直接访问web api控制器,但找不到。

谢谢

【问题讨论】:

  • 您的 MasterController 是什么样的?如果您使用 System.Web.Http 使用localhost:12345/api/Master,则以下内容应该有效;命名空间 WebApi.Controllers { public class MasterController : ApiController { public string Get() { return "Hello world"; } } }
  • public class MasterController : ApiController { // GET api/ public IEnumerable Get() { //SOME FUNCTION } }
  • 我试过你建议的,没用
  • 我敢打赌这是一个服务器端配置问题。我要做的是用 jQuery 创建一个简单的页面,然后使用来自 Firebug 的$.ajax() 调用服务器;调整配置并重复,直到您的呼叫成功。另外:您是否尝试过Get(int id) 方法签名? (或int?,因为它是可选的 - 我不太了解 C#)

标签: javascript angularjs asp.net-web-api


【解决方案1】:

为了确保您的 API 正常工作,请尝试以下操作:

Global.asax.cs:

public class WebApiApplication : HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

WebApiConfig:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

主控制器:

using System.Web.Http;

namespace WebApi.Controllers
{
    public class MasterController : ApiController
    {
        public string Get()
        {
            return "Hello world";
        }
   }
}

在您的浏览器中调用 http:// localhost:[SomePort]/api/Master 应该会导致: “你好世界”

以上配置都是新建WebApi时的标准配置。

【讨论】:

    【解决方案2】:

    在尝试了一些新方向后,我收到了新的错误详细信息。 我收到的最后一个错误+您可以找到的解决方案 here

    【讨论】:

      猜你喜欢
      • 2016-11-01
      • 2018-01-29
      • 2020-07-04
      • 1970-01-01
      • 2019-07-04
      • 2021-11-20
      • 2018-02-26
      相关资源
      最近更新 更多