Tag: 路由

需要我的web api 2控制器的路由

我有一个简单的WebApi2控制器,它返回XML,但我无法使用我定义的路由正确添加另一个方法: namespace CBMI.WebAPIservice.Controllers { public class MarkersController : ApiController { public HttpResponseMessage Get(int? id) { int i = id.HasValue ? id.Value : 0; XmlDocument docContent = GetXmlDataFromDB(i); return new HttpResponseMessage { Content = new StringContent(docContent.InnerXml.ToString(), Encoding.UTF8, “application/xml”) }; } public HttpResponseMessage GetGrantsIS() { XmlDocument docContent = GetXmlDataFromDB(); return new HttpResponseMessage { Content = new StringContent(docContent.InnerXml.ToString(), […]

RouteData.Values当查询字符串不存在时返回NullReferenceException

我如何处理以下语句的NullReferenceException,因为如果在使用URL路由时查询字符串中不存在以下语句时出现空exception错误 string lang = RouteData.Values[“Language”].ToString(); 错误详情 描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。

使用AttributeRouting隐藏URL中的区域

我们使用Areas来对使用AttributeRouting在ASP.NET MVC3中编写的API进行版本化以定义我们的路由。 现在我们有一个“v1”区域,这是我们的第一个API版本。 当我们到达v2时,我们将复制v1并进行修改。 我想对网站使用相同的版本,我不希望路由中的/ v1。 我的问题是,我如何隐藏我的URL中的区域,以便我可以打电话 mywebsite.com/Users/1 代替 mywebsite.com/v1/Users/1 这是我在控制器中的内容 [RouteArea(“/”)] public class HomeController : Controller { // // GET: /v1/Home/ [GET(“”)] public ActionResult Index() { return View(); } } 这是我尝试访问mywebsite.com/时得到的 提前致谢!

使用asp.net mvc beta进行强类型的动作链接?

我曾经能够在预览3中执行以下操作 <%=Html.BuildUrlFromExpression(c => c.AnAction(par1, par2)%> 我应该如何使用MVC Beta以强类型方式创建url? 到目前为止,我发现的唯一的事情就是 当然,这不是强类型的。

控制器名称的MVC路由约束

我的路线设置如下: context.MapRoute( name: “Area”, url: “Area/{controller}/{action}”, defaults: new { controller = “Home”, action = “Dashboard” } ); context.MapRoute( name: “AccountArea”, url: “Area/{accountFriendlyId}/{controller}/{action}”, defaults: new { controller = “Home”, action = “Dashboard”, accountFriendlyId = RouteParameter.Optional } ); context.MapRoute( name: “AccountCampaignArea”, url: “Area/{accountFriendlyId}/{campaignFriendlyId}/{controller}/{action}”, defaults: new { controller = “Home”, action = “Dashboard”, accountFriendlyId = RouteParameter.Optional, campaignFriendlyId = […]

如何在ASP.NET Core中设置启动路由

我的ASP.NET核心应用启动路由设置为: /api/values 我想将此启动路由更改为: / 通过文档查看有很多关于路由约束的规范,但我不确定我是否看到如何设置在启动时运行的路由… 它在启动时调用错误的控制器。 如果我删除控制器(ValueController),我得到一个404.它指定在运行时使用此控制器在哪里? 我在隐藏的launchSettings.json中看到了希望但是正在编辑 http://localhost:5000/api/value 至 http://localhost:5000/ 没有帮助

ASP.NET Web窗体中的ASMX Web服务路由

注意:此代码中没有MVC。 纯旧Web窗体和.asmx Web服务。 我在我的新公司inheritance了一个大规模的ASP.NET Web Forms&Web Service( .asmx )应用程序。 由于某些需要,我正在尝试为所有Web表单执行URL路由,这是我成功完成的。 现在.asmx , routes.MapPageRoute不起作用。 基于以下文章,我创建了一个IRouteHandler类。 以下是代码的外观: using System; using System.Web; using System.Web.Routing; using System.Web.Services.Protocols; using System.Collections.Generic; public class ServiceRouteHandler : IRouteHandler { private readonly string _virtualPath; private readonly WebServiceHandlerFactory _handlerFactory = new WebServiceHandlerFactory(); public ServiceRouteHandler(string virtualPath) { if (virtualPath == null) throw new ArgumentNullException(“virtualPath”); if (!virtualPath.StartsWith(“~/”)) […]

使用属性路由时是否可以更改路由表中的路由顺序?

所以,我正在将区域从使用AreaRegistration切换到使用属性路由。 我遇到的问题似乎是由路由加载到路由表中的顺序引起的。 我通过最后加载有问题的路由解决了AreaRegistration中的问题,这样只有当所有其他路由不匹配时才会匹配该路由。 使用属性路由,这似乎不可能。 我在创建路由时有Order参数,但这不会影响路由表的方式,除非非常狭窄。 这是我在AreaRegistration文件中的路由: context.MapRoute( name: “ActionItems_home”, url: “ActionItems/{group}/{statuses}/{overdueOnly}”, defaults: new { controller = “Home”, action = “Index”, group = “All”, statuses = “New,Open”, overdueOnly = false }, namespaces: new string[] { “IssueTracker.Areas.ActionItems.Controllers” } ); 现在,当我尝试将其切换到属性路由时,唯一接近工作的是: [Route(“”, Order = 4)] [Route(“{group:regex(^(?!Item|DecisionLogs))?}”, Order = 3)] [Route(“{group:regex(^(?!Item|DecisionLogs))}/{statuses=New,Open?}”, Order = 2)] [Route(“{group:regex(^(?!Item|DecisionLogs))}/{statuses=New,Open}/{overdueOnly:bool=false?}”, Order = 1)] 请注意,我必须放入正则表达式,因为否则不会调用Item控制器 […]

为什么Asp.net MVC在具有不同参数时不能区分两个动作?

我试图在我的Asp.net MVC应用程序中有两种不同的帐户注册方法,一种用于一般用户注册,另一种用于注册特定注册令牌的用户。 因此,我的AccountController有以下方法签名: public virtual ActionResult Register () {…} public virtual ActionResult Register (Guid registrationToken) {…} 但是,当我转到http://localhost/Account/Register我得到一个exception,即当前请求在这两个操作之间是不明确的。 我的印象是,如果没有传入registrationToken GET参数,它将使用无参数的Register操作,否则它将使用2nd。 这需要特殊的路由配置吗?

获取ScriptHandlerFactory处理程序

有没有办法调用返回IHttpHandler类型对象的System.Web.Script.Services.ScriptHandlerFactory类GetHandler方法。 我知道ScriptHandlerFactory是一个内部类,但是我可以从其中获得它的任何其他方式吗? 我说的原因是因为我想路由我的.asmx路径并且路由需要这种类型的代码: public IHttpHandler GetHttpHandler(RequestContext requestContext) { return new WebServiceHandlerFactory().GetHandler(HttpContext.Current, “*”, _VirtualPath, HttpContext.Current.Server.MapPath(_VirtualPath)); } } 上面使用了“WebServiceHandlerFactory”,但我只想使用ScriptHandlerFactory,因为我也想使用jquery ajax调用。 我将通过jquery ajax调用调用asmx方法。 你能帮我这么做吗?