Jeg får fejlen "Fjernserveren returnerede en fejl: (500) Intern serverfejl." i denne linie:
string html = (new StreamReader(wr.GetResponse().GetResponseStream())).ReadToEnd();
Jeg håber at du kan se noget forkert i koden, for det kan jeg ikke lige.. :-)
Måske er der nogle bestemte indstillinger jeg mangler..
Min kode ser sådan ud:
***** login.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="login" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="
http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Username: <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
<br />
Password: <asp:TextBox ID="Password" runat="server"></asp:TextBox>
<br />
<asp:Button ID="LoginButton" runat="server" Text="Log In" />
</div>
</form>
</body>
</html>
***** Program.cs:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using System.Web;
namespace E
{
class MainClass
{
private static string myhost = "
http://localhost:34349/web_01/"; private static string loginurl = myhost + "login.aspx";
public static string Get(string url, CookieContainer session)
{
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.Method = "GET";
wr.CookieContainer = session;
string html = (new StreamReader(wr.GetResponse().GetResponseStream())).ReadToEnd();
return html;
}
public static string Post(string url, string fields, CookieContainer session)
{
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.Method = "POST";
wr.CookieContainer = session;
wr.ContentType = "application/x-www-form-urlencoded";
StreamWriter post = new StreamWriter(wr.GetRequestStream());
post.Write(fields);
post.Close();
string html = (new StreamReader(wr.GetResponse().GetResponseStream())).ReadToEnd();
return html;
}
public static void Main(string[] args)
{
CookieContainer session = new CookieContainer();
string first = Get(loginurl, session);
Console.WriteLine(first);
string viewstate = HttpUtility.UrlEncode(Regex.Matches(first,"(?:<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\")([^\"]*)(\" />)")[0].Groups[0].Value);
string eventvalidation = HttpUtility.UrlEncode(Regex.Matches(first,"(?:<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\")([^\"]*)(\" />)")[0].Groups[0].Value);
Console.WriteLine(viewstate);
Console.WriteLine(eventvalidation);
string login = Post(loginurl,
"__EVENTTARGET=&__EVENTARGUMENT=&Login1%24UserName=mig&Login1%24Password=hemmeligt&__VIEWSTATE=" + viewstate + "&Login1%24LoginButton=Log+In&__EVENTVALIDATION=" + eventvalidation, session);
Console.WriteLine(login);
string second = Get(myhost + "nogetandet.aspx", session);
Console.WriteLine(second);
Console.ReadKey();
}
}
}
Jeg har udkommenteret Load-koden i til codebehing til login.aspx:
***** login.aspx.cs:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//if (IsPostBack)
//{
// string u = UserName.Text;
// string p = Password.Text;
// if (u == "a" && p == "b")
// {
// Session["login"] = "ok";
// if (Request.QueryString["ReturnUrl"] != null)
// {
// Response.Redirect("" + Request.QueryString["ReturnUrl"]);
// }
// }
// else
// {
// Session["login"] = "";
// Response.Write("Error in username or password");
// }
//}
}
}