Breeze WebAPI - 找到了与请求匹配的多个操作

时间:2013-07-29 09:56:27

标签: c# api breeze

我正在使用John Papa单页面应用程序源代码来创建自己的应用程序,并且在使用Breeze Web API时遇到了一些问题。我有自己的breeze控制器,只要我添加第二个HttpGET方法,就会收到错误“找到符合请求的多个操作”。

这很奇怪,因为在他的代码中他添加了多个GET并且他的代码有效,但我认为我遗漏了一些东西。

微风控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Breeze.WebApi;
using AgencyUpdate.Models;

namespace AgencyUpdate.Controllers
{
    [BreezeController]
    public class BreezeController : ApiController
    {

        readonly EFContextProvider<AgencyDbContext> _ContextProvider =
            new EFContextProvider<AgencyDbContext>();

        public string MetaData()
        {
            return _ContextProvider.Metadata();
        }

        [HttpGet]
        public IQueryable<api_Agency> GetAgency()
        {
            return _ContextProvider.Context.api_Agency;
        }


        [HttpGet]
        public IQueryable<api_AgencyOffice> GetOffice()
        {
            return _ContextProvider.Context.api_AgencyOffice;
        }

    }
}

我使用此URL来请求数据:

**http://localhost:13762/api/breeze/GetAgency**

此外,我发现这个.CS文件用于路由,但我不知道是否必须对其进行更改。

BreezeWebApiConfig

using System.Web.Http;

[assembly: WebActivator.PreApplicationStartMethod(
    typeof(AgencyUpdate.App_Start.BreezeWebApiConfig), "RegisterBreezePreStart")]
namespace AgencyUpdate.App_Start {
  ///<summary>
  /// Inserts the Breeze Web API controller route at the front of all Web API routes
  ///</summary>
  ///<remarks>
  /// This class is discovered and run during startup; see
  /// http://blogs.msdn.com/b/davidebb/archive/2010/10/11/light-up-your-nupacks-with-startup-code-and-webactivator.aspx
  ///</remarks>
  public static class BreezeWebApiConfig {

    public static void RegisterBreezePreStart() {
      GlobalConfiguration.Configuration.Routes.MapHttpRoute(
          name: "BreezeApi",
          routeTemplate: "breeze/{controller}/{action}"
      );
    }
  }
}

有谁知道问题是什么?

2 个答案:

答案 0 :(得分:2)

我觉得我需要使用的URL有点愚蠢是breeze / breeze / MethodName。

John的代码在URL中没有使用breeze两次,因此存在混淆

答案 1 :(得分:1)

Papa的课程包含single-page-apps-jumpstart.zip文件,其中包含章节的项目源代码。 BreezeWebApiConfig.cs内容的正确版本如下:

public static class BreezeWebApiConfig {

    public static void RegisterBreezePreStart() {
      GlobalConfiguration.Configuration.Routes.MapHttpRoute(
          name: "BreezeApi",
          routeTemplate: "api/{controller}/{action}"
      );
    }
  }
}

注意字符串 routeTemplate:“api / {controller} / {action}”