404 при доступе к контроллеру Breeze?

Я создал проект Asp.Net MVC 5, а затем использовал NuGet для добавления hottowl (включая Breeze). У меня есть следующий контроллер.

[BreezeController]
public class BreezeController : ApiController
{
    readonly EFContextProvider<ApplicationDbContext> _contextProvider = new EFContextProvider<ApplicationDbContext>();

    [HttpGet]
    public string Metadata()
    {
        return _contextProvider.Metadata();
    }

    [HttpGet]
    public IQueryable<Event> Events()
    {
        return _contextProvider.Context.Events;
    }
}

И следующий код существует в файле BreezeWebApiConfig.cs. Однако я всегда получал ошибку 404 при попытке доступа к http://localhost:49890/Breeze/Events. Я что-то пропустил? Или следующая маршрутизация бриза не работает?

using System.Web.Http;

[assembly: WebActivator.PreApplicationStartMethod(
    typeof(ST13a.App_Start.BreezeWebApiConfig), "RegisterBreezePreStart")]
namespace ST13a.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}"
      );
    }
  }
}

person ca9163d9    schedule 19.11.2013    source источник


Ответы (2)


Похоже, вы пропустили часть своего маршрута -

http://localhost:49890/breeze/Breeze/Events

Должно сработать

Если вы не хотите быть избыточным, вы можете либо изменить свой префикс («breeze»), либо изменить имя контроллера («Breeze»).

person PW Kad    schedule 19.11.2013

Вы используете последний бриз? См. Как я буду использовать ветерок с Entity Framework 6 с .net 4.0, в котором говорилось: «Вам необходимо установить «Breeze Server — для веб-API 2» (Breeze.Server.WebApi2)». Попробуйте обновить пакет hottowel и попробовать.

По состоянию на 19.11.2013 из 4 пакетов hottowel только этот использует Breeze.Sever.WebApi2: HotTowel.Angular.Breeze . Возможно, другие пакеты нуждаются в обновлении для поддержки WebApi2.

person xinqiu    schedule 19.11.2013