Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:从.ashx网站下载.jpg_C#_Ashx - Fatal编程技术网

C#:从.ashx网站下载.jpg

C#:从.ashx网站下载.jpg,c#,ashx,C#,Ashx,我目前正在尝试从一个使用.ashx管理上传图像的网站下载图像。该网站是“UploadHandler.ashx”,并采用宽度、高度和图像id等参数。当我在浏览器中访问该网站时,它会自动为我下载图片。但是,当我尝试使用HttpWebRequest和cookies下载它时,它会给我一个1kb的图像,如果我将其更改为.txt,它就是HTML,表示对象已被移动,并将我引用到登录页面 我当前的下载代码: void DownloadImage(string onlinepath, string localpa

我目前正在尝试从一个使用.ashx管理上传图像的网站下载图像。该网站是“UploadHandler.ashx”,并采用宽度、高度和图像id等参数。当我在浏览器中访问该网站时,它会自动为我下载图片。但是,当我尝试使用HttpWebRequest和cookies下载它时,它会给我一个1kb的图像,如果我将其更改为.txt,它就是HTML,表示对象已被移动,并将我引用到登录页面

我当前的下载代码:

void DownloadImage(string onlinepath, string localpath)
    {
        Stream remoteStream = null;
        Stream localStream = null;
        HttpWebResponse response = null;

        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(onlinepath);
            request.AllowAutoRedirect = false;
            request.CookieContainer = cookie;
            response = (HttpWebResponse)request.GetResponse();
            request.ServerCertificateValidationCallback +=
                delegate (
                    object sender,
                    X509Certificate certificate,
                    X509Chain chain,
                    SslPolicyErrors sslPolicyErrors)
                {
                    return true;
                };
            if (request != null)
            {
                if (response != null)
                {
                    remoteStream = response.GetResponseStream();

                    localStream = File.Create(localpath);

                    byte[] buffer = new byte[1024];
                    int bytesRead;

                    do
                    {
                        bytesRead = remoteStream.Read(buffer, 0, buffer.Length);

                        localStream.Write(buffer, 0, bytesRead);
                    } while (bytesRead > 0);
                }
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        finally
        {
            if (response != null) response.Close();
            if (remoteStream != null) remoteStream.Close();
            if (localStream != null) localStream.Close();
        }
    }
.txt格式的当前输出:

<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/Login/Index">here</a>.</h2>
</body></html>
对象已移动
对象移动到。

设置
AllowAutoRedirect
true
@NicoSchertler,下载登录页面的HTML。那么您的浏览器必须做的不仅仅是请求文件(例如发送身份验证cookie或类似文件)。您获得的状态码是什么?在我看来,您似乎未经授权。请使用Fiddler并将您的浏览器发送的请求与您的程序发送的请求进行比较。确保您拥有所有正确的标题/cookies.Set
AllowAutoRedirect
true
@NicoSchertler,下载登录页面的HTML。那么您的浏览器必须做的不仅仅是请求文件(例如发送验证cookies或类似文件)。您获得的状态码是什么?在我看来,您似乎未经授权。请使用Fiddler并将您的浏览器发送的请求与您的程序发送的请求进行比较。确保您拥有所有正确的标题/cookie。