asp.net-web-api2 – 使用未绑定功能时具有多个路由的OData服务
有谁知道如何在.NET服务中托管OData v4以使用多个路由?
我有以下内容: config.MapODataServiceRoute("test1","test1",GetEdmModelTest1()); config.MapODataServiceRoute("test2","test2",GetEdmModelTest2()); 每个GetEdmModel方法都有映射对象. http://testing.com/test1/objects1() 但是,如果我尝试调用以下函数(将无法工作): [HttpGet] [ODataRoute("test1/TestFunction1()")] public int TestFunction1() { return 1; } 它会抛出以下错误:
然而,如果我删除“test2”的“MapODataServiceRoute”,那么只有一条路线,它一切正常. 如何使用多个路由? **我已在以下**发布了该问题的完整示例 **我已尝试下面列出的OData版本示例,但有以下问题** 防爆.如果您下载“OData版本”示例并执行以下操作. >在V1 – > WebApiConfig.cs添加 现在打电话给它. “/ versionbyroute / v1 / Test()”你会得到“V2_Test” 问题是“GetControllerName”在使用未绑定的函数/操作时不知道如何获取控制器. 解决方法
看看
OData Versioning Sample的底漆.
如果您的实体类型和控制器名称在两个EdmModels中都是唯一的,那么您不需要做任何特殊的事情,它应该只是开箱即用.上面的示例利用了这个概念,强制您将字符串值注入控制器类的物理名称以使它们唯一,然后在ODataVersionControllerSelector中重写GetControllerName以将传入路由映射到自定义控制器名称 如果控制器的唯一名称看起来很难,并且您希望使用完整的命名空间(意味着您的控制器名称逻辑仍然是标准的),那么您当然可以在重写DefaultHttpControllerSelector时实现自己的逻辑来选择特定的控制器类实例.简单地重写SelectController.这个方法需要返回一个HttpControllerDescriptor的实例,它比样本更复杂一些. 为了向您展示我的意思,我会将解决方案发布到旧项目的要求中,这与您的项目略有不同.我有一个WebAPI项目来管理对多个数据库的访问,这些数据库具有类似的模式,许多实体名称是相同的,这意味着这些控制器类将具有相同的名称.控制器由文件夹/命名空间构成,这样就有一个名为DB的根文件夹,然后每个数据库都有一个文件夹,然后控制器就在那里.
|
- ASP.NET MVC:使用LINQ To SQL获取表单复选框到多对数DB as
- asp.net-mvc – 改进ASP.NET MVC启动性能
- asp.net中使用自定义控件的方式实现一个分页控件的代码
- 当通过ASP.NET成员资格检查用户角色时,SemaphoreFullExcept
- asp.net-mvc – 无法获得有效的Unity Session Lifetime Man
- asp.net-mvc-3 – 子动作是否与其“父母”动作共享相同的Vi
- asp.net-mvc – ASP.NET MVC FileStreamResult不能按预期工
- asp.net-mvc – 在OWIN登录上检索用户的Facebook电子邮件
- asp.net – 无法加载程序集“App_Web_kh7-x3ka”.确保在访问
- 即使在阅读之后,ASP.NET TempData也不会被清除
- asp.net-mvc – 使用WCF IOC Structuremap的SOA架
- Dapper和MVC VNext中的问题
- asp.net-mvc-3 – 如何在Razor中为Nullable创建编
- asp.net – 在PostBack期间Recaptcha消失
- Asp.Net Core 发布和部署( MacOS + Linux + Ngi
- EF Core 数据变更自动审计设计
- asp.net-mvc – AspNet Identity 2.0电子邮件和用
- ASP.NET Web App分发
- asp.net-mvc – ASP MVC中的自定义错误处理
- asp.net-mvc-3 – 在MVC 3.0中重写Html.BeginFor