c# - 我可以在 ASP.Net Web API Controller 中使用多个 Get 方法吗

标签 c# asp.net-web-api asp.net-web-api-routing

我想实现多个 Get 方法,例如:

Get(int id,User userObj)Get(int storeId,User userObj)

是否可以这样实现,我不想更改操作方法名称,因为在那种情况下我需要在 URL 中键入操作名称。

我正在考虑通过这个示例格式 '//localhost:2342/' 来触发操作方法 其中不包含操作方法名称。

最佳答案

基本上你不能这样做,原因是这两个方法具有相同的名称和完全相同的签名(相同的参数编号和类型)并且这不会用 C# 编译,因为 C# 不允许这样做。

现在,使用 Web API,如果您有两个方法具有与您的示例相同的操作(均为 GET),并且具有相同的签名(int、User),当您尝试从客户端访问其中一个时(就像来自 Javascript 一样),ASP.NET 将尝试将传递的参数类型与方法(操作)相匹配,并且由于两者都具有确切的签名,因此它将失败并引发有关歧义的异常。

因此,您要么将 ActionName 属性添加到您的方法以区分它们,要么使用 Route属性并为您的方法提供不同的路线。

希望对您有所帮助。

关于c# - 我可以在 ASP.Net Web API Controller 中使用多个 Get 方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26971384/

相关文章:

c# - 数据源未添加到 ReportViewer

c# - 注入(inject)的 HttpContext 始终为 null

asp.net - 将字符串数组作为参数传递给 asp.net mvc webapi 方法

c# - 找不到资源(url)时,Web API 2.2 返回自定义 404

c# - Entity Framework 数据读取性能

c# - 抑制 C# 垃圾回收

c# - 在单独的线程中使用实例时使用什么生命周期范围?

c# - WebAPI 路由 : Combining Attributes and HttpConfiguration settings

c# - ASP.NET Web API 不返回 XML

c# - 发布参数始终为空