使用$ stateProvider与asp.net web api

时间:2016-04-17 12:47:28

标签: angularjs asp.net-web-api

我正在学习角度和web api并且在路由方面有点困难。例如,我想使用以下localhost显示产品:53967 / products。

我的申请文件如下。

(function () {

var productListApp = angular.module("productManagement", ["common.services", "ui.router"]);

productListApp.config(function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise("/");//default url


    $stateProvider.state("productList", {
        url: "/products",
        templateUrl: "app/products/productListView.html",
        controller: "ProductListController"
    })

});

})();

我还有一个Index.cshtml页面集如下。

<div class="container">
    <div ng-view></div>
</div>

WebApiConfig

 config.Routes.MapHttpRoute(
            name: "DefaultApi",
             routeTemplate: "api/{controller}/{id}",

            defaults: new { id = RouteParameter.Optional }
        );

这是我的Global.asax文件

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

    }

localhost:53967/products返回404。 可能是什么错误?

此致

1 个答案:

答案 0 :(得分:1)

  

localhost:53967 / products返回404.可能是什么错误?

您可能正在寻找http://localhost:53967/api/products而不是http://localhost:53967/products。确保您与路线声明一致:

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

你那边有api/前缀,所以客户也应该尊重这一点。