POST-данные из текстового файла (читаемого настольным клиентом) на сервер на базе ASP .NET

StackOverflow https://stackoverflow.com/questions/1204930

  •  05-07-2019
  •  | 
  •  

Вопрос

Я занимаюсь разработкой клиент-серверного приложения - сервер является веб-приложением ASP .NET.

Клиент (приложение для настольного компьютера) должен отправить данные, содержащиеся в текстовом файле, в мое веб-приложение asp .net. Объем данных составит около 100 КБ в многострочном текстовом виде.

Как лучше всего размещать эти данные на сервере, учитывая, что мне нужно делать это каждые 10 минут или около того?

Это было полезно?

Решение

Если файл достаточно мал, чтобы вы могли легко разместить его в памяти (что вы хотели бы, чтобы он был, если вы отправляете его через 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 " ]

Другие советы

Я в замешательстве; Вы говорите, что хотите это как параметр 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 .

Если ваш веб-метод использует HttpContext.Current.Request.Headers [" errorLog "] , тогда вашему клиентскому приложению необходимо отправить этот настраиваемый заголовок http при выполнении запроса. Обратите внимание, что заголовки http не предназначены для отправки больших данных.

В своем клиентском приложении вы можете добавить веб-ссылку в службу и использовать сгенерированный прокси-класс для переопределения GetWebRequest и добавьте свой настраиваемый заголовок 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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top