【发布时间】:2012-01-13 17:56:21
【问题描述】:
我目前正在开发一个 ASP.NET MVC3 网站。
我有一个简单的身份验证表单,绑定在一个简单的视图模型上。在本地调试时,一切正常。
但是网站也必须在 Apache + monomod 上运行。这是我遇到的奇怪行为:具有相同请求和参数的相同表单无法正常工作。
更多细节:
视图模型:
/// <summary>
/// Form authentication info
/// </summary>
public class LogOnModel
{
/// <summary>
///
/// </summary>
[DisplayName("Username")]
public string UserName { get; set; }
/// <summary>
///
/// </summary>
[DisplayName("Password")]
public string Password { get; set; }
/// <summary>
///
/// </summary>
[DisplayName("Remember me?")]
public bool RememberMe { get; set; }
/// <summary>
/// Targeted URL
/// </summary>
public string Target { get; set; }
/// <summary>
///
/// </summary>
public LogOnModel()
{
}
}
视图的主要部分,用户可以输入其用户名和密码的页面:
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Website.Areas.Public.Models.LogOnModel>" %>
<p>
Please enter your username and password to continue.
</p>
<% using (Html.BeginForm())
{ %>
<%= Html.ValidationSummary(true, "Authentication failed.")%>
<p>
<%= Html.ActionLink("I forgot my password","PasswordRecovery","Home") %>
</p>
<div>
<fieldset>
<div class="editor-label">
<%= Html.LabelFor(m => m.UserName) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(m => m.UserName) %>
<%= Html.ValidationMessageFor(m => m.UserName)%>
</div>
<div class="editor-label">
<%= Html.LabelFor(m => m.Password)%>
</div>
<div class="editor-field">
<%= Html.PasswordFor(m => m.Password) %>
<%= Html.ValidationMessageFor(m => m.Password) %>
</div>
<div class="editor-field">
<%= Html.CheckBoxFor(m => m.RememberMe) %>
Remember me
</div>
<p>
<input type="submit" value="Connect me!" />
</p>
</fieldset>
</div>
<% } %>
和控制器,接收身份验证信息:
[HttpPost]
public ActionResult LogOn(LogOnModel model)
{
string username = model.UserName;
string password = model.Password;
//On Apache, username & password are empty
...
}
正如我在 cmets 中所说,用户名和密码为空。在本地 ASP.NET 调试服务器上一切正常,使用 Fiddler 我可以看到身份验证请求包含表单数据(用户名、密码等)。
知道为什么绑定似乎不起作用吗? 谢谢。
【问题讨论】:
-
嗯,我可以使用 HttpContext.Request.Form["UserName"] 等来获取值...但对我来说似乎不是很干净...
标签: apache forms asp.net-mvc-3 mono controller