问题标签 [routeattribute]

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

c# - ASP.NET MVC 5: Define route order across controllers (RouteAttribute)

The RouteAttribute("abc", Order = 2) ordering only seems to be respected within a controller: when the following methods are defined in the same controller I get the expected behavior, i.e., Method1 takes priority, Method2 is never invoked.

#xA;

If I define those methods in two separate controllers I get an ambiguous route exception: InvalidOperationException: Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL.

Is it possible to define the order across controllers using attribute routing?

Edit 1: It seems that even routes that would have an implicit ordering within one controller are ambiguous when spread over multiple controllers. The following would be okay within one controller (literal before wildcard), but throws an exception if placed into different controllers.

#xA;

This makes me that it is by design to keep controllers focused and force similar routes to be defined in the same controller.

Edit 2:

These are the routes I actually want to use. I want to put them into different controllers, because they do different things. They differ by the prefix.

#xA;
0 投票
2 回答
184 浏览

asp.net-mvc-5 - MVC5 属性路由

我正在尝试使用路由属性来定义 MVC 路由。

我在控制器中有以下代码..

如果我使用这个 URL ( http://localhost:6481/MDT/Detail?id=1245 ) 它会返回 JSON 数据。

但是如果我使用(http://localhost:6481/MDT/Detail/1245),它会显示错误,指出变量 id 为 Null。

您能否帮助我如何通过使用路由属性来实现 {Controller}/{Action}/{ID} 路由?

0 投票
2 回答
86 浏览

asp.net - 在 asp.net mvc 5 中的主机上发布时区域混淆的路由属性

我正在使用区域的路线属性。

我的路线配置是:

在我的本地一切都是正确的!今天,当我发布我的项目并将其上传到我的主机时,我遇到了两种类型的错误。

如果我请求 Default MapRoute 的 url,mysite.com/Contents/1060一切都是正确的!但是当我请求我所在地区的网址时,我遇到了两种错误!

1)一些请求喜欢mysite.com/cms/commentmysite.com/cms/category有这个错误:

~/Areas/CMS/Views/ContentCategory/Index.cshtml存在于我的主机上!

2)其他一些请求喜欢mysite.com/cms/contentmysite.com/cms/gallery有这个错误:

此错误的“源错误”显示了画廊控制器的默认项目(不是 cms)视图的一些代码!我感到很困惑。

我再次强调这只是发生在主机和我的本地系统上,一切都是正确的!

还应该注意的是,这个错误发生在今天又一个错误之后,昨天在我的主机上一切都得到了纠正,这个错误直到昨天才出现!

0 投票
1 回答
525 浏览

asp.net - 在 asp.net mvc 中找不到路由属性的操作路由

我将 asp.net mvc 与路由属性一起使用,但出现此错误:

为什么找不到我的 localhost:5555/api/test 和 POST 的路由?

这是我的默认路由设置:

0 投票
1 回答
3486 浏览

asp.net-web-api - 缺少路由属性

我在 Web 应用程序中使用 Microsoft ASP.NET Web API 2.2。

控制器如下所示:

问题描述 我们试图在我们的项目中包含 RouteAttribute 类,但我们发现很难做到。有时,我们认为我们得到了它,但是当我们删除 bin 目录并尝试再次构建时,它不存在并且单词 Route 是红色的。另一个症状是缺少 GlobalConfiguration.Configure 和 HttpConfiguration.MapHttpAttributeRoutes。我们也无法理解擦除 bin 目录并从头开始构建的区别。甚至很难理解基于属性的路由还不是 WebAPI 2.2 的一部分,而是一个附加组件。如果我们做对了,一些包是强制性的,一些包是不允许的。真的吗?

这是我们尝试过的,没有特别的顺序:

  • 安装包属性路由
  • 安装包 AttributeRouting.WebApi
  • 安装包 Microsoft.AspNet.WebApi.WebHost
  • 更新包-重新安装 Microsoft.AspNet.WebApi.WebHost
  • 更新包-重新安装
  • 卸载包属性路由

我曾经让所有这些工作,然后一位同事在从我们的存储库中签出代码时找不到 RouteAttribute 类,而不是忽略单个文件。然后我删除了 bin 目录并重建了我的版本,我回归到无法找到 RouteAttribute 类。

我们通过更新确保我们拥有相同版本的 Visual Studio,但问题仍然存在。

我知道 MVC 也具有路由属性,并且它们与 webapi 路由属性不同。我也知道 webapi 路由属性分为网络托管和自托管两种。我试图在我的参考列表中引用 Ssytem.Web.Http.WebHost,因为我们在 IIS 上托管它。

不幸的是,他们决定为所有这些应用程序保持类的名称相同。如果它们不同,就不会发生误解。

这是项目中的引用列表,来自 csproj 文件。

0 投票
0 回答
599 浏览

c# - 如何为 MapMvcAttributeRoutes 添加一些 RouteData?

我正在构建一个多租户网站,并在我的应用程序中同时使用 MapMvcAttributeRoutes 和标准 MapRoute。当我在不使用 RouteAttribute 的控制器中时,我也使用此代码成功获取子域名。我无法从使用 RouteAttribute 的任何控制器/操作中获取子域值。RouteData 集合中将不存在该值。那么当我在使用 RouteAttribute 的 Action 中时如何获取子域值?

这里是 RegisterRoutes 的代码:

例如

这将起作用:

这不起作用:

大卫

0 投票
1 回答
34 浏览

c# - 继承 Route 属性会扰乱 Web API 中现有的操作

我正在尝试Route完全根据this从基本 Controller 继承属性。虽然它似乎工作正常,但它搞乱了以前的工作动作。

下面是我的基本控制器和子控制器的最小示例。

实现路由属性继承后,该api/entity/lookup动作有效,但在api/entity(for All) 的情况下,ActionSelector返回 2 个动作,既AllLookupData,从而导致错误。

我不确定为什么Route即使在常规路线的情况下它也会选择具有属性的操作。我应该做些什么不同的事情?或者有什么可靠的方法来ActionSelector解决这个问题?

0 投票
2 回答
1712 浏览

asp.net - 如何为在 ASP.NET WebAPI 2 中使用路由属性的特定控制器添加 MessageHandler?

是否可以仅为使用路由属性的特定控制器添加 MessageHandler?

如果它不包含某些标头,我想在管道中更早地切断请求。我想提一下:

  • 我无法在 WebApiConfig 中添加其他路由,我们必须使用控制器中的路由属性。

  • 我不想全局添加 MessageHandler 。

  • 它必须是一个 MessageHandler(在管道的早期)。我们有替代方案,但我们正在努力提高效率。

例如,我使用以下 RoutePrefix 装饰了控制器:api/myapicontroller 和一个使用 Route("") 的操作。(我知道这很奇怪,我们正在根据查询字符串选择不同的操作)

然后,我添加了

如果我在config.MapHttpAttributeRoutes();执行 myMessageHandler 之前放置此代码,但我收到此消息:

在与请求匹配的控制器“myapicontroller”上未找到任何操作

如果我把config.MapHttpAttributeRoutes();它放在第一位,那么 myMessageHandler 永远不会被执行,但 myapicontroller 中的 my 操作会被调用。

0 投票
0 回答
279 浏览

asp.net-mvc - MVC 路由和属性路由

我正试图让一些路由工作,但我似乎在某个地方犯了一个错误并且看不到它。对我做错了什么的第二组眼睛或解释将不胜感激。

物理路径:

/Views/Reports/Awards/Index.cshtml

所需路线:/报告/奖项

我的第一次尝试是做一个经典的路线图(见注释代码),还注意到我确实打开了 routes.MapMvcAttributeRoutes():

“传统”路由图不起作用,那是我偶然发现属性路由并决定试一试的时候。这是控制器的外观:

如果我移动 Awards 文件夹的物理位置,一切似乎都正常。视图\奖项\Index.cshtml

那么物理路径中的断开连接吗?我真的应该实施领域吗?(我真的不想那样做)

谢谢,克里斯

0 投票
0 回答
299 浏览

c# - 路由属性不起作用

根据这篇文章,尝试在我的 MVC 应用程序中使用 [Route] 属性: https ://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5 /

我在 RouteConfig.cs 中有 MapMvcAttributeRoutes

浏览到 /Admin/Error/Duplicate 但 /Admin/Error?type=Duplicate 工作正常时,我得到 404。

除了[Route("Error/{type}")]我尝试过[Route("Admin/Error/{type})][Route("{type})]但没有运气。我不知道我哪里错了。