问题标签 [attributerouting]

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 回答
1713 浏览

asp.net-web-api - 属性路由更改 WebAPI 管道

我有一个 .NET WebApi 解决方案。我正在限制对 HTTPS 的访问,但有条件地允许 HTTP 流量。条件之一是所有 HTTP 请求都必须使用 HTTP POST 方法,传递x-http-method-override标头以提供预期的方法,以便可以正确路由请求。我已经配置了一个全局DelegatingHandler来验证所有传入的请求并在需要时执行重定向。

使用标准路由,一切都很好。当我配置 AttributeRouting 时,事情就出轨了。似乎 AttributeRouting 在DelegatingHandler修改请求之前尝试定位路由,导致路由不正确或 IIS 404 错误。有没有办法在 AttributeRouting 处理程序解析路由之前拦截路由?

更多信息:该项目托管在 IIS 上(非自托管)。我使用的 AttributeRouting 是 WebApi 2.0 中的。因此DelegatingHandler在 中定义App_Start

AttributeRouting 配置简单,使用:

路由是使用属性定义的:

0 投票
1 回答
11477 浏览

asp.net-mvc-4 - WebAPI 中的属性路由:找不到资源

带有 WebAPI 端点的 ASP.NET MVC4 项目。我正在尝试为 MVC 控制器和 API 控制器配置 AR。我添加了以下内容:

在此处输入图像描述

现在我在 App_Start 中看到了另外两个文件:AttributeRoutingConfig 和 AttributeRoutingHttpConfig。

第一个有这个:

第二个有这个:

在我的 GlobalConfig 我有这个:

在我的 WebApiConfig 我有这个:

当我尝试 POST 到用 [POST("api/message")] 装饰的路由时遇到的错误:

在我的 Global.asax 中:

我究竟做错了什么?

0 投票
4 回答
15780 浏览

asp.net-mvc - MapMvcAttributeRoutes:在应用程序的预启动初始化阶段不能调用该方法

我在使用 ASP MVC V5 和属性路由的解决方案中的测试项目中有一个非常简单的测试。属性路由和MapMvcAttributeRoutes方法是 ASP MVC 5 的一部分。

这导致:

此错误消息的大多数答案都涉及在文件中配置成员资格提供程序web.config。该项目既没有会员提供者也没有web.config文件,因此错误似乎是由于其他原因而发生的。如何将代码移出这种“预启动”状态,以便测试可以运行?

调用后,属性的等效代码可以ApiController正常工作。HttpConfiguration.EnsureInitialized()

0 投票
1 回答
6063 浏览

c# - 使用属性路由时替换 Url.Link

我已将我的项目从 webapi 升级到 webapi2,现在正在使用属性路由。我有一个方法,我使用 Url helper 来获取 url。这是替换 Url 助手的最佳方法(因为这不适用于属性)。

我的旧用法示例代码:

路线配置:

用法:

0 投票
2 回答
10522 浏览

c# - 在.net web api属性路由中在控制器级别使用Route而不是RoutePrefix

如果我用 Route 属性装饰这个 web api 控制器,我可以点击该方法

但是,如果我改用 RoutePrefix,除非同时使用 Route(""),否则我无法使其工作

这是故意的,还是我搞砸了?

谢谢

0 投票
1 回答
3688 浏览

asp.net-mvc - MVC 5 属性路由 - 默认操作不在模板中

我正在尝试在 MVC 5 中设置属性路由。我有一个具有默认操作的路由,但该操作根本不在我的模板中。这是我的旧路线。

这将满足/Articles/1/test 的路由,而不必为路径中的操作使用索引(即/Articles/Index/1/test)。

我还有另一种方法将被默认地图路线捕获..../Article/Items.

我的问题是我无法弄清楚如何使用 MVC 5 中的新属性路由设置此路由。下面的代码类型有效,但我不想为每个方法添加路由。我希望在类的顶部放置一些可以满足所有方法的东西,而我只是在我的 Index 方法中添加其他东西。

我希望得到类似下面的东西。问题是我被迫将索引放在我的路径前面,就像这样.../Index/1/test.

0 投票
1 回答
185 浏览

asp.net-mvc - ASP.NET MVC AttributeRouting 不生成任何路由

我通过 nuget 为 ASP.NET MVC 4 项目安装了 AttributeRouting,在该项目中,我之前使用 MapRouteLowercase 扩展名映射了小写的路由,但我真的不认为这会导致问题,因为当我在Global.asax,基于属性的路由仍然无法正常工作。

但是当我检查 routes.axd 时,该路由不存在,也没有工作:(

没有触及软件包在安装时所做的任何基本配置。如果我在类中放置一个断点,AttributeRoutingConfig它就会被命中,所以映射函数似乎被正确调用了。

我也尝试使用该[Route("Lofasz",HttpVerbs.GET)]格式进行映射,但没有成功。

任何帮助或提示将不胜感激!

0 投票
1 回答
6945 浏览

c# - 区域内的mvc5属性路由找不到视图

当我在Admin区域内并使用属性路由映射我的路线时,它找不到视图,因为它不查看实际的区域视图文件夹,而只查看全局视图文件夹。

只有当我通过完整路径查看它然后才能显示它,否则它会引发错误。

错误

代码

请注意,如果我禁用属性路由并切换回良好的旧路由,它将起作用。有什么方法可以解决这个问题,或者它按预期工作,我应该在我的所有区域应用完整路径?

0 投票
2 回答
6361 浏览

asp.net-mvc-routing - MVC 5 中的属性路由和可选默认值

传统的路由默认值意味着我们能够访问这些 URL 并且总是以相同的操作结束:

但是今天我们会在这些行中写一些东西:

但是这个路由定义绝不相同。

因此,如果我们将上面的代码更改为

但随后我们将处理颠倒过来:

我们可以通过以下方式使声明性代码更加冗长,并使其像老式路由机制一样工作:

这适用于所有三种不同的路线。

问题

这个问题当然与默认控制器和操作的应用程序默认操作有关。只是我想知道这是否是唯一的方法?有没有更简洁的代码方式让它按预期工作?

0 投票
1 回答
1130 浏览

asp.net-web-api - 属性路由不适用于字典

作为属性路由的新手,我想寻求帮助以使其正常工作。

这个测试是一个简单的动态数据库表查看器:给定一个表名(或存储的查询名或其他)和一些可选的 WHERE 参数,返回查询结果。

表 COMPANIES(任意数量的表之一,其中一个关联的 SELECT 查询存储在某处,以表名为键):

控制器:

SQL 存储在某些资源或表中。显然参数必须完全匹配:

请求(应该看起来很干净,但确切的 URL 格式并不重要):

www.website.com/view/companies?hq=fin --> 404: 没有匹配的控制器 www.website.com/view/companies/hq=fin --> parameters为空 www.website.com/view/companies/hq=fin&name=nokia --> 异常:A potentially dangerous Request.Path value was detected from the client (&).

当我使用:[Route("view/{table}{parameters}")]我得到:

A path segment cannot contain two consecutive parameters. They must be separated by a '/' or by a literal string. Parameter name: routeTemplate. 说得通。

我的问题是:我如何以通常的形式接受表名 任意数量未知参数key1=val1&key2=val2不是这里提到的那样尴尬的索引格式),这些参数稍后将绑定到 SQL 参数,最好使用 vanilla 数据结构而不是类似的东西FormCollection