当我尝试在不同的URL上启动两个应用程序时,我会在属性路由中间件方面遇到问题.如果我在单独的应用中有两个类似的路线,但是使用不同的HTTP方法Web.API似乎只找到其中一种方法. Microsoft.Owin.Hosting.WebApp.Start("http://localhost:1000"); Microsoft.Owin.Hosting.WebApp.Start("http://localhost:1001"); 如何隔离两个应用程序,以使属性路由不要冲突? 解决方案 基于您的上一个评论,下面的示例以过滤汇编: config.Services.Replace(typeof(IAssembliesResolver), new CustomAssembliesResolver()); public class CustomAssembliesResolver : DefaultAssembliesRe
以下是关于 attributerouting 的编程技术问答
问题 当我在实际控制器上使用路由创建一种方法时,请说: " api/country/somings" ... 执行上述请求时,我的代码将执行并返回数据. 但是,当我尝试在基本控制器上调用我的路线时.例如:" api/country/code/123" 我遇到了404错误. 问题 关于如何在使用属性路由时如何实现通用路由的任何想法? 特定控制器 [RoutePrefix("Country")] public class CountryController : MasterDataControllerBase { public CountryController( IGenericRepository repository, IMappingService mapper, ISecurityS
我想将 attributerouting 用果园CMS.为此,我需要用一种返回果园RouteDescriptors. 的方法来实现IRouteProvider 我需要一种获取路线列表的方法,以便我可以做这样的事情: public IEnumerable GetRoutes() { return _routes ?? (_routes = MvcRouting.GetRoutes(GetType().Assembly).Select(route => new RouteDescriptor { ... }).ToArray()); } 此方法来自mvcrouting,但我想使用更丰富的功能 attributerOuting ,但找不到扫描当前的方法用于路由属性的组件.需要一种方法来归因于返回我可以将这些路线列出的路线列表,我可以将这些路线投射到Rou
我使用属性来为我的ActionResult设置特定路由.当我有此配置时,我没有找到404页: [GET("Tender/SubmitBid/{id}/{bidId}")] public ActionResult SubmitBid(string id, string bidId) { ... return View(model); } @using ("SubmitBid", "Tender", new { id = Model.TenderId, bidId = Model.BidId }, FormMethod.Post, new { enctype = "multipart/form-data" })) { ... Save } // 404 not found [HttpPost] public ActionResult SubmitBid(BidViewModel model) { ..
我有一个具有多个领域的MVC5项目.我有一个默认区域(命名为Default),其中一个默认控制器(名为DefaultController).这是可以在站点路线上访问的. [RouteArea] public class DefaultController : Controller { [Route] public ActionResult Index() { return View("Index"); } } public static void RegisterRoutes(RouteCollection routes) { routes.LowercaseUrls = true; routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapMvcAttributeRoutes(); routes.MapRoute(
我有一个ASP.NET Web API,使用用于控制器上的属性.动作级别没有路由属性.访问资源的路线是: [Route("{id}"] public MyApiController: ApiController { public HttpResponseMessage Get(Guid id) { // ... } } 我的问题是,当我想创建一个搜索控制器时,我希望URL为 [Route("search")] ,但这会导致错误:Multiple controller types were found that match the URL.是否可以确保在通用途径之前选择确切的匹配路线? 从技术上讲,短语search可能是第一个控制器的有效ID,但是由于{id}是GUID,因此永远不会是这样,因此我想选择具有确切匹配路线的控制器. 解决方案 您可以使用路由约束来完成这项工作.例如,您可以限制您的ID路线以仅接受有效的
概述 我目前正在尝试获取与API控制器一起使用的属性路由.它似乎不起作用,我不确定为什么.我不确定我是否缺少关键步骤,或者可能是什么问题. 问题 我试图击中 localhost/api/user/custom?test = 1 ,但我得到了404(我希望这能起作用) 如果我击中 localhost/api/customapi?test = 1 我成功进入了我的方法 为什么第一个URL不起作用? 设置 我的设置如下: customcontroller.cs [System.Web.Mvc.RoutePrefix("api")] public class CustomApiController : ApiController { [System.Web.Mvc.Route("user/custom")] [System.Web.Http.HttpGet] public async Task
我们正在使用区域将ASP.NET MVC3编写的API版本具有属性来定义我们的路线. 现在,我们有一个" V1"区域,这是我们的第一个API版本.当我们到达V2时,我们将复制V1并进行修改. 我想为网站使用相同的版本控制,并且我不希望路线中的/v1. 我的问题是,我如何隐藏我的网址中的区域,以便我可以打电话 mywebsite.com/Users/1 而不是 mywebsite.com/v1/Users/1 这是我的控制器中的东西 [RouteArea("/")] public class HomeController : Controller { // // GET: /v1/Home/ [GET("")] public ActionResult Index() { return View(); }
因此,我正在从使用AreareGistration转换为使用属性路由的区域.我遇到了一个问题,该问题似乎是由将路由加载到路由表中的顺序引起的.我最后在有问题的路线中加载了AreareGistration的问题,因此只有所有其他路线都不匹配,该路线才能匹配.使用属性路由,这似乎是不可能的.创建路线时,我有订单参数,但这不会影响事物击中路由表的方式. 非常狭窄. 这是我在AreareGistration文件中的路线: context.MapRoute( name: "ActionItems_home", url: "ActionItems/{group}/{statuses}/{overdueOnly}", defaults: new { controller = "Home", action = "Index", group = "All", statuses = "New,Open", overdueOnly = false }, names
我使用属性路由添加了一个新的HTTPPOST路由" API/EXTORT/ERROR/" 发现多种控制器类型与URL匹配.如果多个控制器上的属性路由与请求的URL匹配. > ,但我在不同的控制器中没有相同的路线;这是这两个控制器中的唯一路线: exporterrorcontroller.cs [HttpGet] [Route( "api/export/error/total/" )] [HttpGet] [Route( "api/export/error/channel/{channelId}/" )] [HttpPost] [Route( "api/export/error/" )] [HttpDelete] [Route( "api/export/error/{id}/" )] [HttpPut] [Route( "api/export/error/clear/" )] ExportGeneratorController.cs
我不确定我试图做的事情是否有效,因为我是C#/asp.net/mvc stack的相对新手. 我在 modelcontroller.cs 中具有这样的控制器动作 //Get [Route("{vehiclemake}/models", Name = "NiceUrlForVehicleMakeLookup")] public async Task Index(string vehicleMake) { // Code removed for readaility models = await db.VehicleModels.Where(make => make.VehicleMake.Make == vehicleMake).ToListAsync(); return View(models); } 在另一个称为 vericlemakecontroller.cs 的控制器中,我有以下内容: [HttpPost]
我始终在我的MVC应用程序中使用这种方法 [Route("admin")] public class AdminController : Controller { } [Route("products")] public class ProductsAdminController :AdminController { [Route("list")] public IActionResult Index() { ... } } url.routeurl() 索引返回的动作 现在,在.net核心中它忽略了基类路由属性,结果只是/products/list/ 这是.NET核心的新事物吗?是否有设置,因此系统可以组合操作 +控制器 +基本控制器路由? 解决方案 我找不到一种结合 action + Controler +基本控制器 的方法,但可以自动这样: [Route("admin")] public class A
如何将使用attributerOuting而不是WebAPI使用的默认RouteConfiguration设置默认控制器. 即摆脱评论的代码部分,因为使用属性时,这是多余的 public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); //routes.MapRoute( // name: "Default", // url: "{controller}/{action}/{id}", // defaults: new { controller = "Home", action = "Index", id = UrlParameter
我有一个有两个项目的解决方案.一个Web API Bootstap项目,另一个是类库. 类库包含带有属性路由的APICONTROLLER. 我将Web API项目的参考添加到类库中,并期望这只是工作. 配置了Web API中的路由: config.MapHttpAttributeRoutes(); 控制器很简单,看起来像: public class AlertApiController:ApiController { [Route("alert")] [HttpGet] public HttpResponseMessage GetAlert() { return Request.CreateResponse(HttpStatusCode.OK, "alert"); } } 但是我在进入URL"/alert"时得到了404. 我在这里想念什么?为什么我不能使用此控制器?大会肯定已
我的WebAPI接受了日期范围的查询遇到一些问题.据我所知,我读过的所有内容都应该有效,但我仍然得到400 Bad Request响应. 我的API路线看起来像这样: [System.Web.Http.HttpGet] [GET("range/{start:datetime}/{end:datetime}")] public HttpResponseMessage Get(DateTime start, DateTime end) 我正在使用AttributeRouting库,并且根据此页面我要求的URL应该可以. 我的请求URL看起来像这样: http://localhost:51258/plots/range/2013-07-29T21:58:39/2013-08-05T21:58:39 i在控制器上有此集合RoutePrefix("plots"),这是URL路线的plots位. 如果我从DateTime对象中脱掉时间,一
我有一个Web API,看起来如下... public class LeaguesController : ApiController { //api/Leagues/active/1 //api/Leagues/complete/1 //api/Leagues/both/1 [GET("api/Leagues/{type}/{id}")] public List Get([FromUri]int id, [FromUri]CompetitionManager.MiniLeagueType type) { return CompetitionManager.GetUsersMiniLeagues(id, true, type); } //api/Leagues/GetMiniLeagueTable/3
我知道RoutePrefix不会单独向路由表添加路由.关于您的操作,您需要声明Route属性.我很难找到权威博客/MSDN页面/某些内容,这些内容说明了为什么Defalut RoutePrefix没有在路由表中添加路由. 是否有人有一个权威的帖子,确实包含这种情况,如果是这样,您会让我知道它是谁.非常感谢. 编辑 为了澄清我的问题 不起作用 [RoutePrefix("api/Steve")] public class SteveController : ApiController { public int get(){return 1000000;} } 作品 [RoutePrefix("api/Steve")] public class SteveController : ApiController { [Route("")] public int get(){return 1000000;} } 上面的方案起作用,因为我
我有一个WebAPI项目,带有一个名为slashbaseservice的基础apicontroller: [RouteArea("uBase")] public abstract class SlashBaseService : ApiController { } 生成的DLL用于WebForms项目中,因此我还拥有一个带有以下代码的WebActivator类来生成路由: RouteTable.Routes.MapHttpAttributeRoutes(config => { // Get all services inheriting from SlashBaseService foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var type in assembly.GetTypes()) {
我目前正在研究一个小型ASP.NET MVC项目.该项目是几个月前发布的.但是现在应出于可用性和SEO原因实施更改.我决定使用属性路由来创建干净的URL. 此刻,产品页面的调用: hostname.tld/controller/getArticle/1234 我定义了这样的新路线: [Route("Shop/Article/{id:int}/{title?}", Name = "GetArticle", Order = 0)] public ActionResult GetArticle(int id, string title = null) { // Logic } 一切正常,但是由于向后兼容和SEO原因,旧路线应该仍然可用.并将HTTP状态代码301重定向到新URL. 我听说可以将多个路线分配给一个动作,例如: [Route("Shop/Article/{id:int}/{title?}", Name = "GetArticle",
我有一个以下两个控制器: [RoutePrefix("/some-resources") class CreationController : ApiController { [HttpPost, Route] public ... CreateResource(CreateData input) { // ... } } [RoutePrefix("/some-resources") class DisplayController : ApiController { [HttpGet, Route] public ... ListAllResources() { // ... } [HttpGet, Route("{publicKey:guid}"] public ... ShowSingleResource(Guid publicKey) {