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

c# - OWIN 无法使用 webapp.start 单独运行多个应用程序

当我尝试在不同的 url 上启动两个应用程序时,我遇到了属性路由中间件的问题。如果我在单独的应用程序中有两条类似的路线,但使用不同的 http 方法,web.api 似乎只能找到其中一种方法。

如何隔离两个应用程序以使属性路由不冲突?

0 投票
1 回答
2399 浏览

c# - Catch-all 路由无法使用 WebApi2 ApiController 找到路由

我正在创建一个 WebApi2 服务,并且我要实现的方法之一表示来自内部树结构中的对象的 HTTP GET - 因此请求将遵循以下内容:

所以我希望我的方法接收“path/to/object/in/tree”。

但是,当我运行它时,我只得到一个 404,有趣的是,我得到一个与标准 IIS 404 不同的 404。它的标题是“'/'应用程序中的服务器错误。”,而一个完全无效的资源标题为“HTTP 错误 404.0 - 未找到”。

我正在使用默认模板来尝试看看我是否可以让它工作,因此相似。

我有这个RouteConfig

这是我的ValuesController

有趣的是,如果我从中派生Controller而不是ApiController它可以正常工作,但是正常的属性路由不起作用。

我尝试按照这篇文章(http://www.tugberkugurlu.com/archive/asp-net-web-api-catch-all-route-parameter-binding)中的方法,但我无法让它工作。

我确定我错过了一些愚蠢的简单的东西,但是在花了几个小时之后,我认为问我做错了什么是谨慎的。

谢谢

0 投票
1 回答
798 浏览

c# - Attribute Routing Strange Behavior in ApiController

I'm using attribute routing to specify my routes in a controller that inherits from System.Web.Http.ApiController. I'm getting some funky behavior. Here's some sample code:

That works absolutely how I would expect. When I visit ~/api/1/user/someId I get the expected information back. When I switch to not include the '1' in the route prefix I get "No HTTP resource was found that matches the request URI 'baseUrl/api/user/someId'."

I have mvc routes, web api routes and attribute routes all being registered on app start in this project but I would think that the default routes for this controller would be ~/userrest/... so I wouldn't think registering those would be the cause of this but I could be wrong.

Sample of what I want:

I'd expect that ~/api/user/someId would work however I get the error mentioned above ("No HTTP resource was found that matches the request URI 'baseUrl/api/user/someId'.").

Full error xml:

0 投票
3 回答
11156 浏览

c# - 使用属性路由为 Web Api 构建视图中的 url

如何在我的视图中从 web api 获取 url?

示例(来自msdn-blog):

现在我想在我的视图中构建“/reviews/edit”,我该怎么做?

我尝试过创建一个小扩展方法,但它要求我给每条路线一个实际的“RouteName”。有没有我可以使用的方法(比如在 MVC 中),我可以只传递控制器和操作?

我现在使用的方法(使用 RouteName)也不允许我使用整数作为参数(除非我传递默认值)。如果我确实需要命名所有路由,我如何创建路由 url,但在请求的“数据”部分中传递我的参数?

当前方法:

编辑

当我使用类似的方法时Url.RouteUrl(new { controller = ..., action = ...}),它会直接重定向到该操作(例如new { controller = "Reviews", action = "Show"} --> /reviews/show,我希望它重定向到/reviews/...

0 投票
3 回答
20060 浏览

asp.net-mvc-5 - 找到多个与 URL 匹配的控制器类型。如果多个控制器上的属性路由与请求的 URL 匹配,就会发生这种情况

...猜猜我是第一个问这个的?

假设您有以下路由,每个路由都在不同的控制器上声明:

Order...您可以在 MVC 5.0 中使用相同的代码执行此操作,但参数除外。但升级到 MVC 5.1 后,您会在问题标题中看到异常消息:

找到多个与 URL 匹配的控制器类型。如果多个控制器上的属性路由与请求的 URL 匹配,就会发生这种情况。

那么新RouteAttribute.Order属性只是控制器级别的吗?我知道在 AttributeRouting.NET 中你也可以这样做SitePrecedence。当所有操作都在同一个控制器中时,唯一的方法是拥有上述路由吗?

更新

抱歉,我应该提到这些路由是在 MVC 控制器上,而不是 WebAPI。我不确定这会如何影响 ApiControllers。

0 投票
1 回答
3543 浏览

c# - 将“routes.MapMvcAttributeRoutes()”添加到 RegisterRoutes() 有什么好处?

根据文章“ ASP.NET MVC5 中的新增功能”,您必须将其添加到 RegisterRoutes() 方法中才能使用属性路由:

...所以现在的方法是:

我没有那个额外的/中间调用,我的属性路由一直在工作。

那么添加它对我有什么作用,如果有的话?

0 投票
1 回答
5972 浏览

asp.net-mvc - 多个 DateTime 参数的属性路由

我已经定义了属性路由,它将两个参数作为日期时间

但不确定,怎么可能。属性路由适用于单个参数,但不确定它如何适用于 2 个参数。也很难知道它将如何从 url 中区分两个参数

单个参数工作正常

http://domain.com/Home/overview/2014/02/01

两个参数的 url 是什么?我尝试了下面的但有一个例外

http://domain.com/Home/overview/2014/02/01/2014/02/04

0 投票
1 回答
4889 浏览

generics - 网络 API。具有属性路由的通用控制器

问题

当我在实际控制器上创建带有路由的方法时,说: “api/country/something”...

当我执行上述请求时,我的代码被执行并返回数据。

但是当我尝试在基本控制器上调用我的路由时。例如:“api/国家/代码/123”

我收到 404 错误。

问题

关于如何在使用属性路由的同时实现通用路由的任何想法?

特定控制器

根据

0 投票
1 回答
9141 浏览

c# - MVC 属性路由 - 带有 GET 和 POST 的默认控制器索引

我们有一个 MVC 5.1 项目并且正在使用属性路由。除了上面有登录表单的默认页面外,一切正常。

表单通过 GET 很好地显示,但在 POST 时我们得到......

HTTP 错误 405.0 - 方法不允许

您正在查找的页面无法显示,因为正在使用无效的方法(HTTP 动词)。

通常默认路由会处理 POST 和 GET 都很好。

显然,我在默认路由上的帖子路由上遗漏了一些东西,因为其他页面上的后续帖子工作正常。

有人做过吗?

谢谢,

0 投票
1 回答
1078 浏览

asp.net-mvc-routing - MVC5:控制器之间的属性路由优先级

我在我的控制器中使用来自 MVC5 的属性路由。

问题:

有没有办法控制控制器之间的属性路由优先级?

考虑以下

根据上面的代码,HomeController.Index()应该使用以下请求调用 action 方法:

  • 领域/
  • 域/{用户名}
  • 域/家/
  • 域/家/{用户名}
  • 域/家/索引/
  • 域/家/索引/{用户名}

第二控制器:

ProfileController.Index()应该使用以下请求调用。

  • 域/配置文件
  • 域/配置文件/索引

问题

从示例中,如果我发送domain/profileurl,则会引发歧义异常。domain/{username}和之间似乎有歧义domain/profile

现在,如果我使用基于约定的路由,这将起作用(第一场比赛获胜)。但它可以在 MVC5 属性路由中完成吗?因为我发现第三方库支持控制器之间的优先级

https://github.com/mccalltd/AttributeRouting/wiki/Controlling-Route-Precedence