텍스트 파일 (데스크탑 클라이언트가 읽기)에서 ASP .NET 기반 서버에 데이터 게시

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

  •  05-07-2019
  •  | 
  •  

문제

클라이언트 - 서버 응용 프로그램을 개발 중입니다. 서버는 ASP .NET 웹 앱입니다.

클라이언트 (데스크탑 앱)는 텍스트 파일에 포함 된 데이터를 ASP .NET 웹 앱으로 보내야합니다. 데이터는 다중선 텍스트 형식으로 약 100kb입니다.

10 분 정도마다 한 번씩해야한다는 점을 감안할 때이 데이터를 서버에 게시하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

파일이 충분히 작 으면 메모리에 쉽게 맞출 수있는 경우 (게시물을 통해 전송하는 경우) 다음을 수행 할 수 있습니다.

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 param으로 원한다고 말하지만 헤더에서 그것을 읽었습니다 ...? 그것은 일반적인 포스트 필드의 형식이거나 원시 데이터의 요청 본문입니다 ...

양식 필드 보내기 :

    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 헤더는 큰 데이터를 보내기위한 것이 아닙니다.

클라이언트 응용 프로그램에서 가능합니다 웹 참조를 추가하십시오 서비스에 그리고 생성 된 프록시 클래스를 사용하여 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