System.Net.HttpWebRequest, (405) Method Not Allowed
Jeg forsøger at lave en webproxy som forwarder et request til en anden URL, og har i den forbindelse defineret følgende funktion:public string ForwardRequest(System.Web.HttpRequest Request, string URI, System.Security.Cryptography.X509Certificates.X509Certificate Certificate)
{
this.mBaseWebRequest=(System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URI);
this.mBaseWebRequest.AllowAutoRedirect=true;
if (Certificate!=null)
{
this.mBaseWebRequest.ClientCertificates.Add(Certificate);
}
switch(Request.HttpMethod.ToUpper())
{
case "GET":
{
goto default;
}
case "POST":
{
this.mBaseWebRequest.Method="POST";
break;
}
case "HEAD":
{
this.mBaseWebRequest.Method="HEAD";
break;
}
default:
{
this.mBaseWebRequest.Method="GET";
break;
}
}
foreach(string HeaderKey in Request.Headers.Keys)
{
this.SetHeaderValue(HeaderKey, Request.Headers[HeaderKey]);
}
if (this.mBaseWebRequest.Method.ToUpper()=="POST")
{
System.IO.StreamWriter RequestStream=new System.IO.StreamWriter(this.mBaseWebRequest.GetRequestStream(), System.Text.Encoding.Default);
RequestStream.AutoFlush=true;
// UNDONE: If HttpMethod=Post, Parse Request.Form; Append Postback Data to RequestStream (HTTP HEADER\r\nName=HttpEnc(Value)...).
System.Text.StringBuilder PostData=new System.Text.StringBuilder();
foreach(string FormKey in Request.Form)
{
if (PostData.Length>0)
{
PostData.Append("\r\n");
}
PostData.Append(FormKey+"="+Request.Form[FormKey]);
}
RequestStream.Write(PostData.ToString());
RequestStream.Close();
}
try
{
System.IO.StreamReader ResponseStream=new System.IO.StreamReader(this.mBaseWebRequest.GetResponse().GetResponseStream(), System.Text.Encoding.Default);
return ResponseStream.ReadToEnd();
}
catch (System.Net.WebException Ex)
{
return Ex.Message;
}
}
Det virker fint med almindelige HTTP GET, men så snart jeg laver en HTTP POST går den ned med en Exception ((405) Method Not Allowed).
Nogen gode ideer til hvordan jeg kommer videre og får min HTTP POST til at fungere?
På forhånd tak!