问题标签 [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 回答
1681 浏览

c# - 如何在 C# 中实现 web api 外观

背景:我们需要能够支持 IIS 以外的 Web 服务器。为此,我们计划将所有处理逻辑转移到另一个服务,该服务将使用排队机制作为传输(具体为 RabbitMQ)。我们将有一个 HTTP web api,它基本上会将所有请求转发到这个其他服务;对于 IIS,我们将在 C# 和 Java 中为其他 Web 服务器(如 Tomcat)实现这个外观。

我的问题是这个;对于 c#,将所有 HTTP 请求和内容请求转发到另一个服务的最佳方式是什么。我正在考虑为此使用 asmx HTTPHandler;我让它工作;但解决方案很丑陋,需要使用 URL 重写器来处理干净的 URL。

有谁知道是否可以使用 MVC 或 web-api 本身来做到这一点?我们基本上把收到的所有内容;URL 本身、cookies、查询字符串等;将其打包并送去处理。

0 投票
1 回答
4224 浏览

asp.net-web-api-routing - VS2012 WebAPI:找不到与名为“CpbOutcome”的控制器匹配的类型

有人可以帮忙吗?我有这个控制器:

而这条路线:

当我使用这个 JSON 结构进行POSTto时:http://localhost:2515/api/CpbOutcome

我收到这条消息:

0 投票
1 回答
4329 浏览

asp.net-web-api-routing - Asp.NET Web Api - 多个 api/命名空间

在我的 MVC4 Web 应用程序中,我需要支持多个 API。我环顾四周,显然在 Web API 中,不支持在不同名称空间中具有相同名称的控制器。

我有哪些选择?

例如:我希望能够向我的 API 消费者提供链接,例如,

api1 中的学生资源可以与 api2 中的完全不同。在这种情况下,最好的方法是什么?我不想让它成为一个单一的 api 并通过 url 参数来处理它。

0 投票
2 回答
1561 浏览

c# - 在 Asp.NET WebApi 中路由类似文件的名称

是否可以在 ASP.NET Web API 路由配置中添加一个路由,以允许处理看起来有点像文件名的 URL?

我尝试在 中添加以下条目WebApiConfig.Register(),但这不起作用(使用 URI api/foo/0de7ebfa-3a55-456a-bfb9-b658165df5f8/bar.group.json):

以下确实有效(它FooController.GetGroup(id,filetag)按预期调用)(使用 URI api/foo/0de7ebfa-3a55-456a-bfb9-b658165df5f8/group/bar):

失败的案例返回一个 IIS 错误(404 - 找不到文件),看起来它是由我的应用程序之外的东西创建的。错误页面(由 IIS Express 生成)包含以下错误详细信息:

我想这意味着一个叫做“StaticFile Handler”的东西在它到达我的代码之前就已经处理了它。最大的问题是:有没有办法防止这种情况发生?

0 投票
2 回答
4852 浏览

asp.net-web-api - Web API 路由映射到根

我正在设置一个 ASP.NET MVC 4 Web API 来接受来自第 3 方服务器的请求,但我根本不知道如何设置路由映射。假设第 3 方服务器期望获得以下响应:

  1. http://[my_server]/authorize?user=[user name]&session=[session token]&item=[item]
  2. http://[my_server]/release?user=[user name]&session=[session token]

或者,请求可以使用专用路径,即:

  1. http://[my_server]/***api***/authorize?user=[user name]&session=[session token]&item=[item]
  2. http://[my_server]/***api***/release?user=[user name]&session=[session token]

我希望能够支持这两种选择。

也应该按照更传统的/controller/id形式实现其他请求,但我想重点关注上述内容(我什至不确定 Web API 是否适合这里)。

我编写了以下控制器:

并尝试了我在 SO 和其他地方可以找到的所有内容WebAppConfig.Register,但是当我在浏览器中尝试请求时,我不断收到 404 错误:

WebAppConfig.Register我的问题是,为了满足上述请求(假设我的测试 URL 是正确的......),我必须做什么 - 特别是在控制器中和控制器中?

0 投票
1 回答
2116 浏览

asp.net-web-api - 每个方法的 ASP.NET WebAPI 支持的媒体类型

给定控制器中的方法:

有没有办法用属性指定支持的媒体类型?例如,CustomerDto 是一个复杂的类,只会使用 JSON (application/json) 而不是 XML (application/xml) 进行序列化,但也可以接受 PDF (application/pdf)。有没有这样的东西:

如果传入的请求不受支持,则可以返回不支持的异常/状态。

注意 - 我不想像在全球范围内那样删除所有的 XML 序列化。相反,我想定义每条路线接受的内容。

使用 - ASP.NET WebAPI RC 1(需要升级)+ 自托管

0 投票
2 回答
8008 浏览

asp.net-mvc - 如何忽略 MVC4 WebAPI 配置中的路由?

我有一个添加了 elmah 的 MVC4 项目。我 global.asax 的 Application_Start() 有

#1和#2如下

模板是相同的,并且路由到控制器的工作方式完全符合我们的要求(从 URI 规范的角度来看)。问题是在添加 WebAPI 路由之后添加了忽略路由。因此,MVC4s 路由应该忽略并由 Elmah(例如/elmah.axd/styles)处理的内容被 WebAPI 拦截并且请求失败 => 所以我的 elmah.axd 页面中没有 CSS。我尝试在 global.asax 中翻转 #1 和 #2 但这导致所有 WebAPI 路由失败 - 比 CSS 在 Elmah 中不起作用更糟糕!

我基本上需要一些方法来指示 WebAPI 的路由忽略{resource}.axd/{*pathInfo}作为第一条路由 - 我该怎么做?

0 投票
1 回答
34174 浏览

c# - 使用 ASPNET MVC 4 和 webapi 自定义 httphandler 和 routehandler

我正在研究 ASPNET MVC 4 和 WebApi。webapi 方法将被移动设备使用。我们需要保护服务,我们使用的是以某种特定方式加密数据。

现在,我需要在到达控制器之前解密调用。如果解密的信息是有效的,它应该像往常一样继续到控制器,如果不是,我会将用户路由到一些错误方法。

要做到这一点,我认为最好的选择是自定义 HttpHandler 和自定义 RouteHandler。我在这里按照教程

全球.asax.cs

并在 Application_Start

服务启动后,我在 ProcessRequest 中创建了一个断点,它没有被命中。可能缺少什么?这是正确的做法吗?

0 投票
1 回答
2930 浏览

asp.net-web-api - Web API - 支持的动词?

我正在为本地代码营组织一次演讲,并试图了解 ApiController 中 HTTP 动词的细微差别。在 Beta、RC 和最终版本之间,关于 ApiController 的一些事情发生了显着变化,关于如何设置它的建议是相互矛盾的,有时甚至是错误的。

假设我只是将标准路由留在 WebApiConfig 中:

(因为如果你在这里添加一个 {action} 参数,你真的可以把事情放在他们的头上)

我了解该约定如何适用于简单的 Crud 调用,例如:

或者,只要它们以动词名称开头,您就可以更改它们:

但是,最初的规范说 ApiController 支持 Get、Put、Post 和 Delete。然而,我可以添加以下方法:

这适用于头部动词,但我不能为晦涩或不存在的动词添加方法:

原生“支持”动词的完整列表是什么?

但是,我可以使用 AcceptVerb 属性添加对这些方法的支持:

这也有效,或者对于任何“定义的”动词使用 Http 属性:

哪个是正确的或首选的?(还有像 [GET] 和 [POST] 这样的属性,这些是否已弃用?)

[HttpBindNever] 和 [NonAction] 是否等效?

0 投票
2 回答
18587 浏览

asp.net - 尚未使用 WebApi Delegating 处理程序分配内部处理程序

我遇到了 WebApi 在我的代码中抛出异常的问题:

异常发生在线:

我不知道如何解决这个问题。我的路由表中有以下内容:

发生这种情况的路由是 DefaultApi 路由。任何帮助都非常感谢....