POST-Daten aus einer Textdatei (durch einen Desktop-Client lesen) zu einem ASP .NET-basierten Server

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

  •  05-07-2019
  •  | 
  •  

Frage

Ich bin eine Client-Server-Anwendung zu entwickeln -. Der Server eine ASP .NET-Webanwendung zu sein

Der Client (eine Desktop-Anwendung) benötigt Daten in einer Textdatei auf meinen asp .net Web-App enthalten ist, zu senden. Die Daten würden ca. 100 KB, in mehrzeiligen Textform.

Was ist der beste Ansatz, um diese Daten an den Server zu senden, da ich es tun muß einmal alle 10 Minuten oder so?

War es hilfreich?

Lösung

Wenn die Datei klein genug ist, dass man leicht in den Speicher passen kann (was Sie es haben wollen, wenn Sie es über POST sind zu senden), dann können Sie einfach wie folgt vor:

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

Was den Text Server-Seite lesen, können Sie nur die Page.Request.Form verwenden [ „Dateiinhalt“]

Andere Tipps

Ich bin verwirrt; Sie sagen, Sie es als POST param wollen, aber Sie es dann aus einem Header lesen ...? Das wäre das Formular für typische Post Felder sein, oder einfach nur der Wunsch Körper für Rohdaten ...

Für Formularfelder Senden:

    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
    }

Für eine RAW-Datei (nicht als eine Form, nur den Text selbst) zu senden, verwenden UploadFile; und für Überschriften verwenden .Headers.Add.

Wenn Ihr Webmethod verwendet HttpContext.Current.Request.Headers["errorLog"] dann Ihre Client-Anwendung benötigt diese benutzerdefinierten HTTP-Header zu senden, wenn die Anfrage ausführt. Bitte beachten Sie, dass HTTP-Header sind nicht groß, Daten senden soll.

In der Client-Anwendung könnten Sie hinzufügen WEBVERWEIS , um den Service und die Verwendung der generierten Proxy-Klasse die GetWebRequest und Ihre benutzerdefinierten hTTP-Header hinzufügen:

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;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top