Asp.net mvc 应用于AccountController.LogOn时在MVC预览2中失败

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属性重定向

尝试将[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
属性重定向并弄乱了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