Asp.net mvc 应用于AccountController.LogOn时在MVC预览2中失败
尝试将[RequireHttps]应用于ASP.NET MVC 2预览2中的AccountController.Logon时,我收到以下错误: ASP.NET在URL中检测到无效字符 这是因为ASP.NET已从重写了我的请求Asp.net mvc 应用于AccountController.LogOn时在MVC预览2中失败,asp.net-mvc,requirehttps,Asp.net Mvc,Requirehttps,尝试将[RequireHttps]应用于ASP.NET MVC 2预览2中的AccountController.Logon时,我收到以下错误: ASP.NET在URL中检测到无效字符 这是因为ASP.NET已从重写了我的请求 http://example.com/admin到 https://example.com/account/logon%3FReturnUrl=/admin 是ASP.NET本身添加了ReturnURL(不是ASP.NET MVC),但正是RequireHttps属性重定向
http://example.com/admin
到
https://example.com/account/logon%3FReturnUrl=/admin
是ASP.NET本身添加了ReturnURL
(不是ASP.NET MVC),但正是RequireHttps
属性重定向并弄乱了URL
%3F
而不是?
正在破坏页面
我认为这在技术上是ASP.NET中的一个缺陷。有解决办法吗?
我在想可能是处理global.asax中“unauthenticated”事件的一种方法,或者可能只是修复RequireAttribute的源代码
[RequireHttps]
public ActionResult LogOn()
{
return View(DefaultModel);
}
<authentication mode="Forms">
<forms loginUrl="~/account/logon"/>
</authentication>
[RequireHttps]
公共操作结果登录()
{
返回视图(默认模型);
}
编辑:我刚刚尝试手动输入http://example.com/accout/login?cat=dog
但它仍然重定向到无效的URL:帐户/登录%3Fcat=dog
。我最初认为这与会员资格提供商和[RequireHttps]
之间的冲突有关,但它看起来只是一个基本错误,所以我想我必须自己修复源代码。假设这是ASP.NET MVC 2预览2中的一个临时错误,我就是这么做的:
- 创建了RequireHttps2类
- 应用了[RequireHttps2]属性而不是[RequireHttps]
公共类RequireHttps2Attribute:FilterAttribute,IAAuthorizationFilter
{
}
这在ASP.NET MVC2 RC中是固定的
/admin
现在将被重写为正确的URL:
/account/logon?ReturnUrl=/admin
我也有同样的问题,但这是我见过的唯一一篇解决这个问题的帖子!谢谢。你试过MVC2RC了吗?如果没有,我们需要提交错误报告!
/account/logon?ReturnUrl=/admin