我想实现多个 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/