问题标签 [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 投票
1 回答
379 浏览

asp.net-mvc - 在 ASP.NET MVC API 中发布对象

我有一个MVC 应用程序,它在一个简单的mvc 4 项目中包含一个 Web 应用程序。此外,我有一个Windows 应用程序,它是另一个 Windows 应用程序项目中 Web 应用程序的 Windows 执行。

Windows 应用程序使用MVC API并通过 resthelper 类以 TfsApiController 的名称调用 MVC Web 应用程序控制器。

除 post 方法外,所有方法均有效。我想将一个对象发布到 tfsapi 控制器。

rest 助手类的 post 方法:

我的 TfsApiController 方法:

和路由:

我浪费了很多时间,但我不知道是什么问题。

更新:

这是我的所有路由:

0 投票
2 回答
4121 浏览

c# - 在 DelegatingHandler 中访问 ApiController 类型

我正在为一个项目使用 Asp.Net WebAPI。我目前正在研究身份验证和授权。

我有一个 messageHandler 将检查请求的 HTTP 身份验证标头并构建我的身份和用户配置文件。但是,我想用该操作可能需要的声明来注释我的控制器操作(或只是控制器)(我们有很多用户可以拥有的声明,所以我不想全部加载它们)。

例如:

在身份验证消息处理程序中,我希望能够查看属性并仅根据需要从数据库中取回声明。为此,我需要知道我将根据路由点击什么控制器和操作:

所以我可以得到那个。但是现在我需要把它变成一个我可以反映的类型,但我只有控制器名称(甚至不是完整的类名或命名空间)。我怎样才能把它变成我可以反思以获得属性等的东西?

我正在研究DefaultHttpControllerSelectorWebAPI 堆栈是如何做到的,它似乎使用HttpControllerTypeCache. 这是一个内部类,所以我无法创建实例。获取目标控制器类型的正确方法是什么?

0 投票
4 回答
11248 浏览

c# - Asp.Net MVC4 + Web API 控制器删除请求 >> 404 错误

我有一个 VS2012 MVC4 解决方案,我在其中测试 Web API 控制器。

我成功测试了 GET、POST、PUT,但 DELETE 仍然给我一个 http 404 错误。当我在我的 api 控制器中的“删除电影”操作中设置断点时,断点永远不会到达。

我阅读了很多关于这个问题的帖子,但没有人帮助我。

这是我的 DELETE API 控制器:

这是我的html页面:

我的经典路线如下:

我的 API 路由如下:

在我的解决方案属性中,我配置了“使用本地 IIS Web 服务器”并选中了“使用 IIS Express”

我也尝试使用“使用 Visual Studio 开发服务器”但同样的问题。

任何的想法?

谢谢。

0 投票
0 回答
431 浏览

c# - 将大多数 MVC 操作定向到 Web API 控制器

我已经使用 Web API 控制器构建了一个 MVC 项目。我没有使用POST,GET方法,而是将路由配置为在我的 API 控制器中使用操作。

这是我的路由器配置:

这是我的控制器:

我不知道这段代码是好是坏。我是否正确使用了 Web API 控制器?

0 投票
1 回答
5601 浏览

c# - 在 web-api 中使用可选参数进行路由

使用 web-api 我去 /api/cat/orders/

我指定了以下路线和控制器方法。我希望使用“ApiRouteWithCategoryAndExtId”路由和“GetMessageByCategoryExtId”方法,因为我将“extid”设为可选。但它使用的是默认的 Get 方法。

(/api/cat/orders/id18 使用GetMessageByCategoryExtId,但是extid 不是可选的)

我究竟做错了什么?

路线:

控制器:

0 投票
3 回答
5825 浏览

asp.net-mvc - 存在多个获取操作时的 MVC API 路由

似乎有一千人在堆栈溢出问题上提出相同的问题,但似乎没有一个单一的解决方案来解决这个问题。我又要问了。。。

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

在我的 APIConfig 中,我定义了以下路线:

我发现我可以毫无问题地访问以下操作: /api/exploitation /api/exploitation/getbysongwriterid/1 /api/exploitation/getbysongid/1

当我尝试访问 /api/exploitation/1 我得到这个异常

谁能看到我的路线有什么问题?还是有其他问题?

0 投票
1 回答
165 浏览

asp.net-web-api - 为路由指定有效的控制器

我必须为我们的系统提供两个 Web APIPublicController控制器PrivateController。这些应该有以下路线:

/public/{controller}/{id}

/private/{controller}/{id}

在防火墙上,所有请求/private都被阻止,并且只能从网络内部获得。但按照惯例,我的两个控制器都可用于两条路由,因此我可以使用 url请求PrivateController(它应该只在 下可用) 。/private/public/PrivateController/1

有没有办法为路由指定有效的控制器,以便PrivateController仅可用于私有路由?还是有一些其他的做法来满足这个要求?

感谢您的回复。

0 投票
2 回答
139 浏览

asp.net-mvc-4 - mvc4 web api route sheme

我想要这样的访问资源:

这条路线有什么不正确的?

编辑

以下是错误详情:

0 投票
2 回答
879 浏览

c# - RouteTester 路由中的可选参数问题

我有一个带有路由的 MVC4 WebApi 项目,该项目与路由中的可选“id”参数一起正常工作:

当发出实际请求时,路由会在控制器方法中点击 GetAll 或 Get 方法:

但是在单元测试中,RouteTester 对象总是命中 Get 方法,而不是 GetAll。

作品:

失败:

我试过传入一个实际的过滤器对象而不是 null 但这根本不会改变结果。

我知道我可以通过创建两条不同的路由来修复它,但我有点不情愿,因为当前路由确实适用于除单元测试之外的所有内容。

有什么建议么?

0 投票
1 回答
4200 浏览

asp.net - 带有 PUT 的 ASP.NET Web API 路由

我正在尝试为我认为非常简单的事情设置 Web API 路由。但是,Web API 中的路由似乎与不同的 HTTP 动词不一致。假设我有这个控制器有这些动作......

我定义了以下路线...

然后我最终定义了以下路线......

为什么不选择默认 PUT 路由?默认 GET 和默认 PUT 的路由有什么不同?我已经尝试以各种可以想象的方式装饰这些功能,但我得到了相同的结果。

主要是我想知道如何获取默认的 PUT 路由。如果您对如何修改这些路由有任何建议,这样我就不必为每个控制器指定一个路由来指定动作名称,这也很棒。

谢谢!

伊恩

编辑:我今天早上注意到以下路线也没有被定义..