Asp.net mvc 4 尝试在asp.net mvc中实现微风控制器

Asp.net mvc 4 尝试在asp.net mvc中实现微风控制器,asp.net-mvc-4,breeze,Asp.net Mvc 4,Breeze,我试图在Asp.NETMVC4中实现一个简单的Breeze控制器,但似乎无法访问它。它是否可能与.Net的标准Web.Api相冲突 如果我的url是http://localhost:49479/api/values然后我从Web Api获得了一个很好的返回值 但是如果我的url是http://localhost:49479/breeze/Breeze我收到“Http 404”错误“未找到资源” 如果我的url是http://localhost:49479/breeze/Breeze/5I get

我试图在Asp.NETMVC4中实现一个简单的Breeze控制器,但似乎无法访问它。它是否可能与.Net的标准Web.Api相冲突

如果我的url是
http://localhost:49479/api/values
然后我从Web Api获得了一个很好的返回值

但是如果我的url是
http://localhost:49479/breeze/Breeze
我收到
“Http 404”错误“未找到资源”

如果我的url是
http://localhost:49479/breeze/Breeze/5
I get error
未找到与请求URI匹配的HTTP资源http://localhost:49479/breeze/Breeze/5“。

非常感谢你的建议

以下是我在..Controllers/BreezeController.cs中的内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using Breeze.ContextProvider;
using Breeze.WebApi2;
using Newtonsoft.Json;

   namespace RageSys.Controllers
   {
    [BreezeController]
    public class BreeezeController : ApiController
    {
        // GET api/values
        public string Get(int id)
        {
            return "value";
        }
        public IEnumerable<string> GetMtm(int id)
        {
            return new string[] { "value1", "value2" };
        }
    }
  }
使用系统;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用System.Net.Http;
使用System.Web.Http;
使用Breeze.ContextProvider;
使用Breeze.WebApi2;
使用Newtonsoft.Json;
命名空间RageSys.Controllers
{
[BreezeController]
公共类控制器:ApiController
{
//获取api/值
公共字符串Get(int-id)
{
返回“值”;
}
公共IEnumerable GetMtm(int-id)
{
返回新字符串[]{“value1”,“value2”};
}
}
}
在BreezeWebApiConfig.cs中:

using System.Web.Http;

[assembly: WebActivator.PreApplicationStartMethod(
    typeof(RageSys.App_Start.BreezeWebApiConfig), "RegisterBreezePreStart")]
namespace RageSys.App_Start {
  ///<summary>
  /// Inserts the Breeze Web API controller route at the front of all Web API routes
  ///</summary>
  public static class BreezeWebApiConfig {

    public static void RegisterBreezePreStart() {
      GlobalConfiguration.Configuration.Routes.MapHttpRoute(
          name: "BreezeApi",
          routeTemplate: "breeze/{controller}/{action}"
      );
    }
  }
}
使用System.Web.Http;
[组件:WebActivator.PreApplicationStartMethod(
类型(RageSys.App_Start.BreezeWebApiConfig),“RegisterBreezePreStart”)]
名称空间RageSys.App_Start{
///
///在所有Web API路由的前面插入Breeze Web API控制器路由
///
公共静态类BreezeWebApiConfig{
公共静态无效寄存器breezeprestart(){
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
名称:“BreezeApi”,
routeTemplate:“breeze/{controller}/{action}”
);
}
}
}

api/values
请求中获得的结果不是来自所列控制器。项目中必须仍保留默认的
ValuesController
WebApiConfig
(它定义了采用参数的路由)


您没有
http://localhost:49479/breeze/Breeze/5
。第三段(目前为5段)需要是操作方法的名称。对您来说,这意味着
GetMtm
。您没有接受任何参数的路由,因此您将无法从:
http://localhost:49479/breeze/Breeze/GetMtm/5
除非您定义了这样的路线。不过,您可能不想这样做,因为Breeze与实体框架的结合将使生活变得非常简单。您应该实现尽可能简单的Breeze/Entity框架应用程序,并从中了解它是如何工作的

您从
api/values
请求中得到的结果不是来自列出的控制器。项目中必须仍保留默认的
ValuesController
WebApiConfig
(它定义了采用参数的路由)


您没有
http://localhost:49479/breeze/Breeze/5
。第三段(目前为5段)需要是操作方法的名称。对您来说,这意味着
GetMtm
。您没有接受任何参数的路由,因此您将无法从:
http://localhost:49479/breeze/Breeze/GetMtm/5
除非您定义了这样的路线。不过,您可能不想这样做,因为Breeze与实体框架的结合将使生活变得非常简单。您应该实现尽可能简单的Breeze/Entity框架应用程序,并从中了解它是如何工作的

您从
api/values
请求中得到的结果不是来自列出的控制器。项目中必须仍保留默认的
ValuesController
WebApiConfig
(它定义了采用参数的路由)


您没有
http://localhost:49479/breeze/Breeze/5
。第三段(目前为5段)需要是操作方法的名称。对您来说,这意味着
GetMtm
。您没有接受任何参数的路由,因此您将无法从:
http://localhost:49479/breeze/Breeze/GetMtm/5
除非您定义了这样的路线。不过,您可能不想这样做,因为Breeze与实体框架的结合将使生活变得非常简单。您应该实现尽可能简单的Breeze/Entity框架应用程序,并从中了解它是如何工作的

您从
api/values
请求中得到的结果不是来自列出的控制器。项目中必须仍保留默认的
ValuesController
WebApiConfig
(它定义了采用参数的路由)


您没有
http://localhost:49479/breeze/Breeze/5
。第三段(目前为5段)需要是操作方法的名称。对您来说,这意味着
GetMtm
。您没有接受任何参数的路由,因此您将无法从:
http://localhost:49479/breeze/Breeze/GetMtm/5
除非您定义了这样的路线。不过,您可能不想这样做,因为Breeze与实体框架的结合将使生活变得非常简单。您应该实现尽可能简单的Breeze/Entity框架应用程序,并从中了解它是如何工作的

如果您使用参数并使用Breeze,那么请确保在Breeze查询中使用.withParameters({ParameterName:“Fred”})或.withParameters({id:id value}),并确保要调用函数中的参数名(在您的示例中为GetMtm)服务器上的参数名与客户端上使用的参数名匹配。

如果使用参数并使用Breeze,请确保在Breeze查询中使用.withParameters({ParameterName:“Fred”})或.withParameters({id:id值}),并确保在f中使用参数名