【发布时间】:2010-03-22 14:58:21
【问题描述】:
我在使用 SSL 保护的 MVC (1.0) 应用程序中有一个登录页面,我有一个属性可以检查页面请求并在使用 http 请求时重定向到 https uri。这一切都有效,但是当我发布表单内容时,我收到以下错误:
参数字典包含一个 参数“rememberMe”的空条目 不可为空的类型'System.Boolean' 对于方法 'System.Web.Mvc.ActionResult 登录(系统字符串,系统字符串, 布尔值,System.String)' 在 'DAC.US.Web.Portal.Controllers.AccountController'。 使参数可选其类型 应该是引用类型或 可空类型。参数名称: 参数
这里是控制器代码...
//
// GET: /Account/LogOn
[RequiresSSL]
public ActionResult LogOn(string ReturnUrl)
{
if (TempData["Message"] != null)
ViewData["Message"] = TempData["Message"];
TempData["Message"] = null;
ViewData["ReturnUrl"] = ReturnUrl ?? "/Home";
return View();
}
同样,RequireSSL 属性有效,但来自该 SSL uri 的 POST 无效。什么不工作?
这里是操作(POST)方法,我很抱歉没有发布。当不作为 SSL 运行时,这一切工作文件,但是当我更改为在 SSL 下运行时,POST 不再工作。
//
// POST: /Account/LogOn
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOn(string userName, string password, bool rememberMe, string returnUrl)
{
Logger.InfoFormat("LogOn : ({0}, PASSWORD, {1}, {2}).", userName, rememberMe, returnUrl);
if (!ValidateLogOn(userName, password))
{
return View();
}
_FormsAuthentication.SignIn(userName, rememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(this.Request.Url.AbsoluteUri.Replace(this.Request.RawUrl, returnUrl).Replace("https://", "http://"));
}
else
{
return Redirect(this.Request.Url.AbsoluteUri.Replace(this.Request.RawUrl, "/Home").Replace("https://", "http://"));
//return RedirectToAction("Index", "Home");
}
}
表单 HTML
<% using (Html.BeginLogOnForm()){ %>
<div class="logon-row logon-sso-row">
<div class="logon-links-row"><a href="<%=Url.Action("SingleSignOn", "Account", new{ReturnUrl=ViewData["ReturnUrl"]}) %>">Single Sign On</a></div>
</div>
<div class="logon-row">
<span class="block-span logon-label-cell">User Name:</span>
<span class="block-span"><%= Html.TextBox("username", null, new { style = "width:150px" })%></span>
</div>
<div class="logon-row">
<span class="block-span logon-label-cell">Password:</span>
<span class="block-span"><%= Html.Password("password", null, new { style="width:150px" })%></span>
</div>
<div class="logon-row">
<span class="block-span logon-label-cell">Remember Me?:</span>
<span class="block-span"><%= Html.CheckBox("rememberMe")%></span>
</div>
<div class="logon-row logon-bottons-row">
<input type="submit" value="Log On" class="mainshipButton mainshipPageButton" />
</div>
<div class="logon-row">
<div class="logon-links-row"><a href="<%=Url.Action("Request", "Account") %>">Request Account</a></div>
<div class="logon-links-row"><a href="<%=Url.Action("Forgot", "Account") %>">Forgot ID/Password</a></div>
</div>
<% } %>
【问题讨论】:
标签: asp.net-mvc ssl