Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 如何在远程服务器上写入CSV文件?_C#_.net_Winforms_Httpwebrequest_Streamwriter - Fatal编程技术网

C# 如何在远程服务器上写入CSV文件?

C# 如何在远程服务器上写入CSV文件?,c#,.net,winforms,httpwebrequest,streamwriter,C#,.net,Winforms,Httpwebrequest,Streamwriter,我正在尝试将一些输出写入服务器上的.csv文件。我使用以下代码,但文件中仍然没有输出。 意思是什么都没写。 我的密码在这里 void WriteInRegister(DataRow userdata) { HttpWebRequest reqHTTP; StringBuilder result = new StringBuilder(); try { r

我正在尝试将一些输出写入服务器上的.csv文件。我使用以下代码,但文件中仍然没有输出。 意思是什么都没写。 我的密码在这里

void WriteInRegister(DataRow userdata)
        {
            HttpWebRequest reqHTTP;
            StringBuilder result = new StringBuilder();
            try
            {
                reqHTTP = (HttpWebRequest)HttpWebRequest.Create(new Uri("http://10.10.10.10/config/RequestPlacer.csv"));
                reqHTTP.Credentials = new NetworkCredential("usename", "password");

                if (reqHTTP != null)
                {
                    reqHTTP.ContentType = "application/octet-stream";
                    reqHTTP.Method = WebRequestMethods.File.UploadFile;
                }
                string postdata = (userdata[0].ToString() + ",MacId," + DateTime.Now.ToShortDateString()).ToString();
                byte[] text = Encoding.UTF8.GetBytes(postdata);

                reqHTTP.ContentLength = text.Length;

              /* WebClient wcClient = new WebClient();
                wcClient.Credentials = new NetworkCredential("usename", "password");
                wcClient.UseDefaultCredentials = true;*/
                //wcClient.OpenWrite(new Uri("http://10.10.10.10/config/RequestPlacer.csv"), postdata);


                //  string path = System.Web.HttpContext.Current.Server.MapPath("http://10.10.10.10/config/RequestPlacer.csv");
                   reqHTTP.AllowWriteStreamBuffering = true;
                   Stream writer = reqHTTP.GetRequestStream();
                  /* wcClient.Headers.Add("Content-Type", "application/csv");
                   wcClient.UploadString(new Uri("http://10.10.10.10/config/RequestPlacer.csv"), "POST", postdata);*/


                StreamWriter streamwriter = new StreamWriter(writer);
                streamwriter.WriteLine(postdata);
                streamwriter.Close();
            }
            catch (Exception exe)
            {
                MessageBox.Show(exe.Message);
            }
        }

例外情况是(“请求被中止:请求被取消。”)

我认为问题在于您写入流的内容与您在
内容长度
标题中指示的长度不匹配:因为您使用
streamwriter.WriteLine
,您还编写了一个回车+换行符,该换行符不计入您发送的内容长度

例如,如果您的
postdata
“foo”
Encoding.UTF8.GetBytes(postdata).Length
将返回3,但
streamwriter.WriteLine(postdata)
将实际写入
“foo\r\n”
,即5个字节


您只需要使用
Write
而不是
WriteLine
(或者在内容长度中计算新行,如果您想保留它)

您没有对请求调用GetResponse,因此它无法完成。它在哪一行抛出异常?最后是streamwriter.Close();我也尝试了WebClient,但没有出现resultException(“请求被中止:请求被取消”)