C# 向远程服务器发送HttpWebRequest问题

C# 向远程服务器发送HttpWebRequest问题,c#,asp.net,.net-1.1,asp.net-1.1,C#,Asp.net,.net 1.1,Asp.net 1.1,我正试图从我的asp.net 1.1(C#)windows应用程序(我知道..它真的很旧,很遗憾,这就是我们拥有的)将文件上载到远程服务器(windows server 2008 R2)。当我尝试上传时,它给了我一个错误:“远程服务器返回了一个错误:(404)找不到。”。 以下是我使用的代码: 有什么想法吗 HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uploadUrl); req.Credentials = new Networ

我正试图从我的asp.net 1.1(C#)windows应用程序(我知道..它真的很旧,很遗憾,这就是我们拥有的)将文件上载到远程服务器(windows server 2008 R2)。当我尝试上传时,它给了我一个错误:“远程服务器返回了一个错误:(404)找不到。”。 以下是我使用的代码: 有什么想法吗

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uploadUrl);
req.Credentials = new NetworkCredential(uName,pwd);
req.Method = "PUT";
req.AllowWriteStreamBuffering = true;

// Retrieve request stream 
Stream reqStream = req.GetRequestStream();

// Open the local file
FileStream rdr = new FileStream(txt_filename.Text, FileMode.Open);

// Allocate byte buffer to hold file contents
byte[] inData = new byte[4096];

// loop through the local file reading each data block
//  and writing to the request stream buffer
int bytesRead = rdr.Read(inData, 0, inData.Length);
while (bytesRead > 0)
{
    reqStream.Write(inData, 0, bytesRead);
    bytesRead = rdr.Read(inData, 0, inData.Length);
}

rdr.Close();
reqStream.Close();

req.GetResponse();
上传URL如下:
http://10.x.x.x./FolderName/Filename

请使用的“POST”方法,而不是的“PUT”,我想它会起作用

编辑:

检查下面的代码,它将帮助您

 public void UploadFile()
    {
        string fileUrl = @"enter file url here";
        string parameters = @"image=" + Convert.ToBase64String(File.ReadAllBytes(fileUrl));
        WebRequest req = WebRequest.Create(new Uri("location url here"));

        req.ContentType = "application/x-www-form-urlencoded";
        req.Method = "POST";
        byte[] bytes = Encoding.ASCII.GetBytes(parameters);

        try
        {
            req.ContentLength = bytes.Length;
            Stream s = req.GetRequestStream();
            s.Write(bytes, 0, bytes.Length);
            s.Close();
        }
        catch (WebException ex)
        {
            throw ex; //Request exception.
        }

        try
        {
            WebResponse res = req.GetResponse();
            StreamReader sr = new StreamReader(req.GetResponseStream());
        }
        catch (WebException ex)
        {
            throw ex; //Response exception.
        }
    }

正确输入fileUrl变量并在创建WebRequest实例时注意uri,写入定位文件夹的url。

我已编辑了您的标题。请参阅“”,其中的共识是“不,他们不应该”。如果服务器告诉您“未找到”,那么很可能是您使用了错误的URL。另外,您的两条流和您的WebResponse应该在
中使用
块。谢谢John。为标题中的标签道歉。当我在浏览器中打开URL时,它工作正常。这就是为什么我被难住了。当你在浏览器中打开URL时,你使用的是GET,而不是PUT。也许你的意思是“POST”?当我使用“POST”时,我得到了相同的错误。实际上,上传的URL是错误的,而问题就是由此引起的。您应该传递文件夹的链接,而不是图像或文件的链接。请检查它。谢谢,当我只使用文件夹的链接时,我现在收到一条消息说:405方法不允许。感谢您的响应,但我使用的是asp.net 1.1,像:File.ReadAllBytes这样的方法不存在。您确定服务器支持“POST”方法吗?这个错误通常是由于这个原因造成的。我应该在哪里检查呢?