问题标签 [asp.net-web-api-routing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net-mvc-4 - MVC4 Web API 中的结构导致路由中断
我有一个简单的控制器,它带有一个无参数的 Get 和一个带有 id 的 Get。
Identity 是一个自定义结构,简化后如下所示:
但是,如果我尝试导航到任一端点,我会收到一条错误消息,指出找到了与请求匹配的多个操作。如果单个资源的 Get 采用 Guid 而不是我的 Identity 结构,则 BooksController 工作得很好。
我的自定义模型活页夹和接线:
请注意,如果将任何参数添加到无参数 Get 中,则上述绑定很好。也就是说,如果我将 BooksController 更改为:
我的路由配置只是开箱即用的示例:
然后我可以正确导航到两个端点。如何设置我的 BooksController 以允许无参数 Get 和接受我的自定义身份的 Get?
c# - 新的 WebApi 项目没有 API 的默认路由(但仍然有效)
我创建了一个新的 WebAPI MVC 项目,API 控制器具有路径http://localhost:1234/api
并且它们从该路由工作,但是RegisterRoutes
该类不包含默认路由,它包含以下内容:
API 的路由在哪里?
干杯
戴夫
asp.net-web-api - 如何通过重定向将 OData 查询参数从一个操作传递到另一个操作
我有以下场景:具有“GetAll”方法的 ProductsController,它接受 ODataQueryOptions,如下所示:
和一个具有 GetProducts 方法的 CategoryController,如下所示:
我不想重新定义在 CategoryController 中按特定类别获取产品的逻辑。有没有办法
1) 将 ODataQueryOptions 作为重定向的一部分传递?
2) 可以修改选项以添加额外的过滤条件吗?在上面的示例中,我想在执行重定向之前为当前 CategoryID 添加一个额外的过滤条件,以便“GetAllProducts”收到以下请求:“api/Products?$select=Name,Price&$top=10& $过滤器=类别 ID eq 12 "
以上是否有意义或者我应该以不同的方式处理这个问题?
提前致谢。
asp.net - 路由不适用于添加到空 Web 应用程序的 Web api
在 学习 John Papa 出色的“SPA Jumpstart”课程的同时,我在教程中谈到了测试扬声器控制器的要点。此时我的应用程序返回了“404:未找到”错误,而不是加载扬声器。
如果扬声器控制器有问题,我做了一个简单的右键单击 -> 添加项目 -> 添加 Web api 控制器并创建了“valuesController”,其中仅包含标准启动方法。那也没用,我只是得到:
在 Chrome 的开发工具中。
随后,我从头开始再次尝试使用一个基本的空 Web 应用程序项目,然后转到 nuget 并安装了 Microsoft Wep Api 包。然后我再次添加了“valuesController”,仍然没有。然后我意识到我需要做更多工作,并添加了一个“App_Start”文件夹,在其中放置了一个名为 WebApiConfig.vb 的文件。这包含:
导入 System.Web.Http
我添加了一个“global.asax”文件,其中包含:
完成此操作后,基本路由工作,我能够成功进入该控制器默认页面。
但是...尽管在我的 jumpstart 项目中卸载并重新安装了 web api 包,但我仍然无法访问相同的 URL,即使在相关文件(global.asax 和 webApiConfig.vb)中(对我而言)所有内容都相同)。
index.vbhtml 页面没有呈现“scripts/css”和其他 js 文件还有另一个问题,但我认为这与这个问题无关,因为我正试图直接转到“...api/speakers” " 或 "...api/values" 来测试因此绕过索引页面。
除了 web api 包,我不应该需要任何东西,对吧?我在 global.asax 和 webapiconfig.vb 页面中设置了一个断点,但它们从未被命中 - 我认为它们在调试器连接时已经完成。我现在完全不知道该去哪里找。不应该有任何其他文件能够干扰路由,对吧?
我的 packages.config 文件:
asp.net-mvc - 用于识别相同资源的 asp.net webapi url
我希望能够通过不同的 id 类型来识别资源。例如:
GET http://example.com/customers/internalId=34去
并 GET http://example.com/customers/externalId= 'JohnDoe' 去
我知道我可以通过在通用控制器方法中使用一些解析逻辑来做到这一点,但我不想这样做。如果可能的话,我如何使用 asp.net webapi 的路由功能来实现这一点。
asp.net - 在 MVC 4 WebAPI 中无法识别路由
尽管我在直接 MVC 中使用了路由,但我并没有过多地使用 ASP.NET WebAPI。显然我做错了什么,也许有人可以帮忙?我有一个名为 UsersController 的控制器和两个方法,Register 和 Details,它们都接受两个字符串参数并返回一个字符串,都标记为 HttpGet。最初我从 WebApiConfig.cs 中的两个路由映射开始:
通过此设置,只能找到 URL 的第一个路由,例如:
如果我打电话:
我得到一个 404。如果我交换两条路由,那么我可以调用 Details 方法但不能调用 Register 方法,再次得到 404。我采用的解决方法是更具体地使用路由:
用户控制器看起来像:
所以我不明白为什么第二个注册的路由的 {action} 组件没有与正确的方法相关联。
谢谢
乔
asp.net-mvc-4 - “发现多个操作”错误
我为我的 web api 服务设置了以下默认路由...
我在“UsersController”下有以下服务:
问题是我在尝试访问这三个服务中的任何一个时都会收到“发现多个操作”错误。请求应该从所有路由中选择最后一个路由并执行请求。
如果我要执行'/api/users/byemail?email=blah@blah.com',不应该知道'ByEmail'是动作并且使用方法和动作,匹配正确的方法吗?我想我错过了一些东西。
asp.net-web-api - Web API 中的操作和 QueryString 参数
我想让我的通用路由确定是否像这样在 URL 中传递了查询字符串
这是我当前的路线定义:
我已经阅读了一些答案,说将 dateOfLog 值添加为 Route 定义的可选操作:
这似乎不起作用,也许我做错了什么,我不确定。
这就是我目前处理问题的方式,但我想使用路由引擎的 ModelBinding 功能:
请告诉我如何创建一个正确使用 ModelBinding 的 Route 定义并将我的自定义 url 映射到控制器的参数。
asp.net - 如何在方法 ODataHttpRouteCollectionExtensions.MapODataRoute 中指定命名空间?
我收到错误消息:“找到了与名为 ... 的控制器匹配的多种类型”并找到了 MapHttpRoute 方法的解决方案。是否可以传递一组命名空间或类似于 MapODataRoute 的东西?
c# - WebApi“找到与该请求匹配的多个操作”
这些问题中的另一个,但我无法找到为什么我在其他任何一个问题中都出现此错误的答案。
我的路线设置为:
我试图映射到我的控制器方法,这些方法声明为:
尝试访问其中任何一个时,我都会收到问题标题中显示的错误。我一定遗漏了一些明显的东西,但我不能把手指放在上面。有任何想法吗?