问题标签 [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.

0 投票
8 回答
173540 浏览

c# - ASP.NET Web API 中的自定义方法名称

我正在从 WCF Web API 转换为新的 ASP.NET MVC 4 Web API。我有一个 UsersController,我想要一个名为 Authenticate 的方法。我看到了如何执行 GetAll、GetOne、Post 和 Delete 的示例,但是如果我想在这些服务中添加额外的方法怎么办?例如,我的 UsersService 应该有一个名为 Authenticate 的方法,他们在其中传递用户名和密码,但它不起作用。

我可以浏览到 myapi/api/users/,它会调用 GetAll,我可以浏览到 myapi/api/users/1,它会调用 Get,但是如果我调用 myapi/api/users/authenticate?username={0} &password={1} 那么它会调用 Get (NOT Authenticate) 并报错:

参数字典包含“Navtrak.Services.WCF.NavtrakAPI.Controllers.UsersController”中方法“System.String Get(Int32)”的不可空类型“System.Int32”的参数“id”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。

如何调用自定义方法名称,例如 Authenticate?

0 投票
3 回答
16980 浏览

c# - 控制器按区域划分

可能重复:
如何注册已在区域中创建的控制器

我有一个问题 - 可以做下一个吗?

我有三个领域:

在每个区域内,我都有一个同名的 ApiController,但当然在不同的命名空间中:

我在配置中还有一个当前(我想使用的)区域的值。

如果他在浏览器中输入,我想将用户映射到适当区域中的控制器(我可以在配置中找到):

例如,如果配置文件中的当前区域是 SiteOne,那么这个请求应该映射到 MvcAppliaction.Areas.SiteOne.Controllers.ValuesController 控制器,但是如果我将配置文件中的当前区域更改为 _Default 的 SiteTwo,它应该映射到正确的控制器。

PS。使用 MVC 控制器很容易,你只需要设置你的路由:

0 投票
2 回答
10370 浏览

c# - asp.net webapi:如何传递可选参数?

我正在使用新的 asp.net web api,并希望传递可选参数。需要填充属性以便允许使用?符号传递参数是否正确?

我相信在使用 uri 模板完成此操作之前。

有人有例子吗?

我目前正在传递 url 中的 id,它作为 int 到达我的控制器。但我需要通过一些日期。

0 投票
1 回答
9969 浏览

c# - WebApi / 使用 URL 编码的路由

与此相关:URL 中的 URL 编码斜杠

我使用了 Mehrdad Afshari 的答案(通配符路由参数),它最有效!但是,多个斜线将转换为单个斜线。

我的路线是resource/{*url}

使用GET resource/abc%2fdef我的控制器方法调用abc/def.

使用GET resource/abc%2f%2f%2f%2fdef我的控制器方法再次调用abc/def. 多余的斜线丢失。

0 投票
41 回答
379809 浏览

c# - Post 参数始终为空

自从升级到 RC for WebAPI 后,我在我的 WebAPI 上调用 POST 时遇到了一些真正奇怪的问题。我什至回到了新项目生成的基本版本。所以:

并从 Fiddler 调用:

当我调试时,永远不会分配字符串“值”。它总是为NULL。有人有这个问题吗?

(我第一次看到更复杂类型的问题)

该问题不仅与 ASP.NET MVC 4 绑定,RC 安装后的全新 ASP.NET MVC 3 项目也会出现同样的问题

0 投票
11 回答
197731 浏览

c# - Web API 控制器中的多个 HttpPost 方法

我开始使用 MVC4 Web API 项目,我有多种HttpPost方法的控制器。控制器如下所示:

控制器

这里MyRequestTemplate表示负责处理来自请求的 Json 的模板类。

错误:

当我使用 Fiddler 发出请求时,http://localhost:52370/api/VTRouting/TSPRoute或者http://localhost:52370/api/VTRouting/Route 出现错误:

找到多个与请求匹配的操作

如果我删除上述方法之一,它可以正常工作。

全球.asax

我已尝试修改 中的默认路由表global.asax,但仍然出现错误,我认为我在 global.asax 中定义路由时遇到问题。这是我在 global.asax 中所做的。

我正在使用 POST 在 Fiddler 中发出请求,在 RequestBody 中为 MyRequestTemplate 传递 json。

0 投票
4 回答
39384 浏览

c# - 基于查询字符串参数名称的路由

我正在尝试在我的 MVC4 WebAPI 项目中配置路由。

我希望能够根据产品名称或类型搜索产品,如下所示:

/api/products?name=WidgetX- 返回所有名为 WidgetX /api/products?type=gadget的产品 - 返回所有类型为小工具的产品

路由配置如下:

问题是查询字符串参数的名称似乎被忽略了,所以第一个路由总是使用的,不管查询字符串参数的名称。如何修改路线以使其正确?

0 投票
10 回答
146680 浏览

c# - 在 ASP.NET Web API 中使用多个 Get 方法进行路由

我正在使用带有 ASP.NET MVC 的 Web Api,而且我对它很陌生。我已经在 asp.net 网站上浏览了一些演示,我正在尝试执行以下操作。

我有 4 个 get 方法,具有以下签名

对于上述所有方法,我希望我的 web api 有点像如下所示

  • 列表获取()=api/customers/
  • 客户 GetCustomerById(字符串 ID)=api/customers/13
  • 列表 GetCustomerByCurrentMonth() =/customers/currentMonth
  • 客户 GetCustomerByUsername(字符串用户名)=/customers/customerByUsername/yasser

我尝试对路由进行更改,但由于我是新手,所以不太了解。

所以,请有人可以帮助我理解并指导我应该如何做到这一点。谢谢

0 投票
1 回答
4490 浏览

asp.net-mvc - ASP.NET MVC Web.Api 路由 - 真实世界示例

我一直在研究 Web.Api 中的路由,并研究了表示端点的各种方式。我遇到了Instagram 的 REST 端点。(其中有一些可爱的文档)使用 Web.Api 为 Instagram 用户端点等情况设置路由和控制器的最佳方法是什么?

如果我想在我的应用程序中复制这些端点,我将如何去做。我是否只需要一个具有 5 种方法的控制器“用户”,我需要什么样的路由来将 REST 调用定向到这些方法?

0 投票
3 回答
6688 浏览

c# - 同一个 HttpVerb 的多个操作

我有一个具有以下操作的 Web API 控制器:

并映射了以下路线:

当我提出以下请求时,一切都按预期工作:

但是当我尝试提出请求时:

我得到以下异常:

我尝试向默认路由添加一个空操作名称,但这没有帮助:

有什么想法可以将默认的 RESTful 路由与自定义操作名称结合起来吗?

编辑:路由机制不会因控制器的选择而混淆。它对单个控制器上的操作选择感到困惑。我需要的是在未指定任何操作时匹配默认操作。希望能澄清事情。