Questions tagged «asp.net-routing»

4
如何在ASP.NET MVC中重定向到动态登录URL
我正在创建一个多租户网站,为客户托管页面。URL的第一段将是标识客户端的字符串,该字符串使用以下URL路由方案在Global.asax中定义: "{client}/{controller}/{action}/{id}" 使用/ foo / Home / Index之类的URL可以正常工作。 但是,当使用[Authorize]属性时,我想重定向到也使用相同映射方案的登录页面。因此,如果客户端是foo,则登录页面将是/ foo / Account / Login,而不是web.config中定义的固定的/ Account / Login重定向。 MVC使用HttpUnauthorizedResult返回401未经授权状态,我认为这会使ASP.NET重定向到web.config中定义的页面。 那么,有谁知道如何重写ASP.NET登录重定向行为?还是通过创建自定义授权属性在MVC中进行重定向会更好? 编辑-答案:在深入研究.Net源代码之后,我认为自定义身份验证属性是最佳解决方案: public class ClientAuthorizeAttribute: AuthorizeAttribute { public override void OnAuthorization( AuthorizationContext filterContext ) { base.OnAuthorization( filterContext ); if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult ) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary …

7
ASP.NET MVC,URL路由:最大路径(URL)长度
场景 我有一个应用程序,使用了良好的旧查询字符串URL结构: ?x=1&y=2&z=3&a=4&b=5&c=6 并将其更改为路径结构: /x/1/y/2/z/3/a/4/b/5/c/6 我们正在使用ASP.NET MVC和(自然地)ASP.NET路由。 问题 问题在于我们的参数是动态的,并且(理论上)我们需要容纳的参数数量没有限制。 一切都好,直到我们被下列火车撞上: HTTP错误400.0-错误请求ASP.NET在URL中检测到无效字符。 当我们的URL超过一定长度时,IIS将抛出此错误。 坚韧不拔 这是我们发现的: 这不是IIS问题 IIS确实有最大路径长度限制,但是上面的错误不是这个。 了解dot iis dot net如何使用请求过滤部分“基于请求限制的过滤” 如果该路径对于IIS而言太长,它将抛出404.14,而不是400.0。 此外,IIS最大路径(和查询)长度是可配置的: <requestLimits maxAllowedContentLength="30000000" maxUrl="260" maxQueryString="25" /> 这是一个ASP.NET问题 经过一番戳后: IIS论坛线程:ASP.NET 2.0的最大URL长度? http://forums.iis.net/t/1105360.aspx 原来,这是一个ASP.NET(实际上是.NET)问题。 事情的核心是,据我所知,ASP.NET无法处理长度超过260个字符的路径。 棺材上的钉子是由哈克(Phil the Haack)本人证实的: 堆栈溢出ASP.NET URL MAX_PATH限制问题ID 265251 问题 那是什么问题呢? 问题是,这有多大限制? 对于我的应用程序,这是一个交易杀手。对于大多数应用程序,这可能不是问题。 那披露呢?我从未听说过有关ASP.NET Routing的任何限制。ASP.NET MVC使用ASP.NET路由的事实使此影响更大。 你怎么看?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.