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

asp.net - ASP NET Web API 路由模板

我有一个名为 Agency 的实体,具有以下 api

我使用的路线模板是

显然,第 2 和第 3 之间存在歧义。我确实有一个解决方法,将 id 放入查询字符串

我认为必须有聪明的方法。你能就此提出建议吗?

谢谢

0 投票
1 回答
62 浏览

.net - 路线中是否可以有多部分动作?

好的,典型的路线可能如下所示:

问题是我们现有的端点看起来像这样

我们的支付控制器就是一个例子。我们可能有以下端点:

方法名称分别为:

因此,不必将每个端点添加到 WebApiConfig 以保持我们的约定,有没有办法使用模板来处理这种情况?

0 投票
2 回答
2289 浏览

asp.net-web-api - 为 ASP.NET Web API 应用程序生成特定于版本的帮助文档页面

我正在使用 WebAPI版本控制包通过 X-Api-Header 使用“VersionHeaderVersionedControllerSelector”对我的 API 进行版本控制。我还使用Microsoft.AspNet.WebApi.HelpPage自动生成 API 文档。为了使控制器 versionign 工作,它们需要以 VersionXYZ 作为命名空间中的后缀进行命名空间,以便“VersionHeaderVersionedControllerSelector”能够将请求路由到适当版本的控制器,如下所示:

这按预期工作,但是当我查看生成的帮助页面时,ApiDescription包含来自 ID ( GETapi/Version1.Products ) 和 RelativePath( api/Version1.Products ) 属性中命名空间的“VersionXYZ”后缀。理想情况下,我想做的是有一个顶级帮助页面,其中只有 API 版本号和钻取会以正常方式显示 API,即 ApiDescription.ID = GETapi/Products 和 ApiDescription.RelativePath = api/Products

有没有办法使用开箱即用的 API 来实现这一点,还是我需要推出自己的ApiExplorer实现

0 投票
3 回答
2627 浏览

file-upload - 使用 MVC4 Web-API 的文件上传表单:出现错误 101 (net::ERR_CONNECTION_RESET):连接已重置。错误

尝试使用 VS2010 访问 MVC4 Web-API 应用程序中的控制器操作时,出现网页不可用错误。我正在尝试上传一个小型(小于 1MB)的 pdf 文档,创建一个 byte[] 以传递给另一个服务。但是,我无法进入我的普通控制器或我的 api 控制器。我的应用程序有效,所有视图/部分/等。除了这个(带有文件上传表单的页面)之外,都显示得很好。这个视图是一个强类型的局部视图。

我尝试使用此处显示的方法:上传文件 MVC 4 Web API .NET 4以及此处:http: //blogs.msdn.com/b/henrikn/archive/2012/03/01/file-upload -and-asp-net-web-api.aspx并且它们都不起作用,因为我的操作属性找不到我的操作。无论我放 api/Documents 还是 Home/api/Documents 都行不通。所以我放弃了,回到我的 html 助手 beginform,希望它会以这种方式找到它……但它没有。因此,在放弃了花哨的 web-api 东西(无法异步工作)之后,我想我只是去老学校并通过表格传递文件,但我得到了同样的错误。我还尝试重新创建页面,调整我的 httphandlers,运行时调整,路由和 apiroutes,但完全不知所措。请帮忙!

我的用户界面:

带有网址的表格 我的错误: 错误

我的表格:

我的 API 控制器:我知道这没有意义,但我有一个断点来查看它是否到达这里,但它没有......

我的普通控制器动作:

我的 WebApiConfig:

我的路线配置:

我的 WebConfig 的一部分:

0 投票
3 回答
9480 浏览

asp.net-web-api - asp.net web api 路由设计(多路由)

我目前正在使用 ASP.NET Web API 设计一个 REST api。

我想提供这样的方法(http方法无关紧要 - 应该适用于所有人):

  • /api/客户端
  • /api/client/CID1234(CID1234 = ID)
  • /api/client/CID1234/orders(订单=操作)

问题是: Id应该是可选的 - /api/client 可能会返回客户端列​​表 Action也应该是可选的 - 在一种情况下,我想获取特定的客户端,而在另一种情况下,我想对该客户端执行特定操作. (RPC 风格)

我认为我不能使用约束,因为我使用的“ID”看起来非常不同。

这种方法不起作用:

这种方法也不起作用:

例如,这会返回 404,因为它无法区分“action”和“id”。“在与名称“CID1234”匹配的控制器“客户端”上未找到任何操作。

为了获得我需要的灵活性,我应该使用自定义 Actionselector 吗?或者是否有可能使用内置功能的 Web API?我了解有人可能希望将订单用作单独的实体。但我还不如在那里有真正的“行动”(而不是“实体”)。像“丢失密码”,“更改密码”等等。

感谢您的意见

PS:这里描述的事情并不是我愿意做的事情。糟糕的 api 设计。

0 投票
2 回答
4155 浏览

asp.net-web-api - UriPathExtensionMapping 控制 WebAPI 中的响应格式

我在让 UriPathExtensionMapping 在 ASP.NET WebAPI 中工作时遇到问题。我的设置如下:

我的路线是:

我的全球 ASAX 文件是:

我的控制器是:

使用 curl 发出请求时,JSON 是默认响应,即使我明确请求 XML,我仍然会得到 JSON:

回报:

谁能看到我的设置有问题?

以下代码在配置路由后映射 Global.asax 文件中的扩展:

0 投票
1 回答
2005 浏览

c# - 特定控制器操作的 ASP.NET MVC 4 路由

我有以下控制器/动作:

想法是不必指定summaryOnly 参数,但必须指定minDate 和maxDate。

有人可以提供上述路线吗?

0 投票
1 回答
3089 浏览

asp.net-mvc-4 - HttpConfiguration 的 RouteHandler

我偶然发现了一篇关于 ASP.Net MVC 的 WebAPI 的 RouteHandlers 的有趣文章:

http://techbrij.com/separate-web-api-action-mobile-asp-net-mvc

在本文中,它展示了来自桌面 Web 浏览器和来自移动设备的相同 WebAPI 请求如何路由到不同的控制器。该示例使用如下所示的 RouteHandler:

此代码用于 Global.asax。

但是,我在 App_Start 中通过 WebApiConfig 注册我的 WebAPI 路由,其中​​ HttpConfiguration 被传递到 config 方法中:

config.Routes.MapHttpRoute 没有处理 RouteHandler 的能力。如何将 RouteHandler 与 config.Routes.MapHttpRoute 一起使用?

谢谢你的帮助。

更新

经过进一步研究,我想我找到了我正在寻找的东西,但不确定这种方法是否好用。

我的目标是拦截传入的请求并确定请求的设备类型,以便我可以定制对正确设备(台式机、平板电脑、移动设备等)的响应。HttpRequestMessage 授予您对 Headers 和 UserAgent 字符串的访问权限。我找到了一种分析 UserAgent 以确定设备类型的方法(http://techbrij.com/display-mode-mobile-tablet-tv-aspnet-mvc)。我正在使用命名约定,将 DeviceType 放在控制器名称之后:

值[设备类型]控制器

例子:

  • 值控制器
  • 价值观移动控制器
  • 值平板控制器

我从 UserAgent 确定设备类型,然后在 RouteData 集合中换出控制器名称。

**注意:下面的 DisplayModeConfig.GetDeviceType(userAgent) 使用上面链接中概述的方法

通过根据设备类型指示哪个控制器处理响应,我可以通过定制对设备类型的正确响应来更好地控制用户体验。

您对这种方法有何看法?你能看出这种方法有什么问题吗?

0 投票
1 回答
346 浏览

asp.net-web-api - 在 MVC4 中使用 WebAPI 找不到路由

在我的 WebApiConfig.cs 文件中,我定义了以下路由:(这是此处定义的唯一路由)

我正在做的帖子是:

我的控制器是这样的:

我得到的错误是:

从菲尔的程序来看,这条路线应该可行。有什么想法吗?

在此处输入图像描述

0 投票
1 回答
2081 浏览

asp.net - 向 asp.net web api 控制器发送多部分/混合 http 请求

我想向 asp.net web api 控制器发送一个多部分/混合 http 请求 ($batch),如下所示:

问题是我的请求没有路由到我的控制器中的正确操作,有没有解决方案来解决这个问题?!