oje*_*jek 0 c# asp.net-mvc httpwebrequest
本文末尾的最后更新
我整天都在努力,我无法让它发挥作用:
private void button1_Click(object sender, EventArgs e)
{
var loginUri = new Uri(@"http://localhost:5898/Account/Login");
const string strLoginData = "Login=ojejq&Password=ojejqjejq&returnUrl=%2F";
var cookie = GetAuthCookie(loginUri, strLoginData);
}
public CookieContainer GetAuthCookie(Uri loginUri, string data)
{
var cookieJar = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(loginUri);
request.Method = "POST";
request.CookieContainer = cookieJar;
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
var myWriter = new StreamWriter(request.GetRequestStream());
myWriter.Write(data);
myWriter.Close();
request.GetResponse();
return cookieJar;
}
Run Code Online (Sandbox Code Playgroud)
在我的ASP MVC应用程序中,我有一个/Account/Login POST控制器,甚至没有被上面的代码命中.我究竟做错了什么?
编辑:我的asp mvc应用程序中的两个登录操作:
[AllowAnonymous]
public ActionResult Login()
{...}
Run Code Online (Sandbox Code Playgroud)
和
[HttpPost]
[AllowAnonymous]
public ActionResult Login(LoginModel model, string returnUrl)
{...}
Run Code Online (Sandbox Code Playgroud)
第二次更新:添加登录模型
public class LoginModel
{
[Required]
[Display(Name = "Login", ResourceType = typeof(NameResources))]
[StringLength(16, ErrorMessageResourceName = "LoginLengthError", ErrorMessageResourceType = typeof(NameResources), MinimumLength = 4)]
public string Login { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password", ResourceType = typeof(NameResources))]
[StringLength(32, ErrorMessageResourceName = "PasswordLengthError", ErrorMessageResourceType = typeof(NameResources), MinimumLength = 8)]
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
第三次更新:我忘了提一下,在我的web.config中我设置了cookieless ="AutoDetect"选项.我不知道它是否有任何改变?
最后更新:首先,谢谢你们的时间,每个试图帮助我的人都会得到一个upvote.我发现问题不在代码中,而是在我的visual studio dev服务器中.它以某种方式重定向了我的button1 POST请求,在进程中丢失了数据,并将该请求更改为GET请求.我知道,werid,但代码还可以.感谢您的时间.
我认为你应该尝试"登录"的"UserName":
const string strLoginData = "UserName=ojejq&Password=ojejqjejq&returnUrl=%2F";
Run Code Online (Sandbox Code Playgroud)
并试试这个:
public CookieCollection GetAuthCookie(Uri loginUri, string data)
{
var cookieJar = new CookieContainer();
var request = (HttpWebRequest)WebRequest.Create(loginUri);
request.Method = "POST";
request.CookieContainer = cookieJar;
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
var myWriter = new StreamWriter(request.GetRequestStream());
myWriter.Write(data);
myWriter.Close();
var webResponse = request.GetResponse() as HttpWebResponse;
return webResponse.Cookies;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2647 次 |
| 最近记录: |