У меня есть страница входа в приложение MVC (1.0), которое я защищаю с помощью SSL, у меня есть атрибут, который проверяет запрос на страницу и перенаправляет его на https uri, когда он запрашивается с помощью http.Это все работает, однако, когда я публикую содержание формы, я получаю следующую ошибку:
Словарь параметров содержит пустую запись для параметра 'RememberMe' не обнуляемого типа 'System.Boolean' для метода'System.Web.Mvc.ActionResult LogOn (System.String, System.String, Boolean, System.String)' в 'DAC.US.Web.Portal.Controllers.AccountController'.Чтобы сделать параметр необязательным, его тип должен быть либо ссылочным типом, либо типом Nullable.Имя параметра: параметры
вот код контроллера ...
//
// 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 работает, но POST из этого SSL URI - нет.Что не работает?
Вот метод действия (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>
<% } %>