Asp.net mvc 4 尝试在asp.net mvc中实现微风控制器
我试图在Asp.NETMVC4中实现一个简单的Breeze控制器,但似乎无法访问它。它是否可能与.Net的标准Web.Api相冲突 如果我的url是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
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中使用参数名