Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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# 将数据从文本文件(由桌面客户端读取)发布到基于ASP.NET的服务器_C#_.net_Post_Upload - Fatal编程技术网

C# 将数据从文本文件(由桌面客户端读取)发布到基于ASP.NET的服务器

C# 将数据从文本文件(由桌面客户端读取)发布到基于ASP.NET的服务器,c#,.net,post,upload,C#,.net,Post,Upload,我正在开发一个客户机-服务器应用程序-服务器是一个ASP.NETWeb应用程序 客户端(桌面应用程序)需要将文本文件中包含的数据发送到我的asp.net web应用程序。 数据大约为100KB,采用多行文本形式 考虑到我需要每10分钟左右发布一次数据,将这些数据发布到服务器的最佳方法是什么;你说你想要它作为一个POST参数,但是你从一个标题读到它。。。?这将是典型post字段的表单,或者只是原始数据的请求主体 对于发送表单字段: NameValueCollection fields =

我正在开发一个客户机-服务器应用程序-服务器是一个ASP.NETWeb应用程序

客户端(桌面应用程序)需要将文本文件中包含的数据发送到我的asp.net web应用程序。 数据大约为100KB,采用多行文本形式


考虑到我需要每10分钟左右发布一次数据,将这些数据发布到服务器的最佳方法是什么;你说你想要它作为一个POST参数,但是你从一个标题读到它。。。?这将是典型post字段的表单,或者只是原始数据的请求主体

对于发送表单字段:

    NameValueCollection fields = new NameValueCollection();
    fields.Add("name1","some text");
    fields.Add("name2","some more text");
    using (var client = new WebClient())
    {
        byte[] resp = client.UploadValues(address, fields);
        // use Encoding to get resp as a string if needed
    }

要发送原始文件(不是表单;只是文本本身),请使用
UploadFile
;对于标题,请使用
.headers.Add

如果您的webmethod使用
HttpContext.Current.Request.headers[“errorLog”]
,则您的客户端应用程序在执行请求时需要发送此自定义http标题。请注意,http头不是用来发送大数据的

在客户端应用程序中,您可以向服务添加Web引用,并使用生成的代理类覆盖并添加自定义http标头:

protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
    var req = (HttpWebRequest)base.GetWebRequest(uri);
    var value File.ReadAllText("path_to_your_file");
    req.Headers.Add("errorLog", value);
    return (WebRequest)req;
}

如果文件足够小,您可以轻松地将其放入内存(如果您通过POST发送文件,您希望它是这样的),那么您可以简单地执行以下操作:

string textFileContents = System.IO.File.ReadAllText( @"C:\MyFolder\MyFile.txt" );

HttpWebRequest request = (HttpWebRequest)WebRequest.Create( "http://www.myserver.com/myurl.aspx" );
request.Method = "POST";

ASCIIEncoding encoding = new ASCIIEncoding();

string postData = "fileContents=" + System.Web.HttpUtility.UrlEncode( textFileContents );

byte[] data = encoding.GetBytes( postData );

request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

Stream dataStream = request.GetRequestStream();

dataStream.Write( data, 0, data.Length );

dataStream.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

// do something with the response if required
至于阅读文本服务器端,您只需使用Page.Request.Form[“fileContents”]