2013-09-04 10 views

Antwort

5

Ist Ihre Frage aus der Perspektive der Parallelität oder ASP.NET Web API im Allgemeinen? Jede Anfrage hat ihren eigenen Kontext und Sie können mehrere Anfragen parallel bearbeiten. Aber hier sind zwei Dinge, die du dir anschauen kannst.

(1) Da Sie HttpContext verwenden, sperren Sie sich auf Webhosting (IIS), was in vielen Fällen in Ordnung sein sollte. Aber ich möchte, dass Sie sich dessen bewusst sind.

(2) Ihr Code HttpRequestHelper.RequestBody() funktioniert, wenn Sie von einem Aktionsfilter aus aufgerufen werden, wie Sie bereits erwähnt haben. Wenn Sie jedoch versuchen, das von anderen Orten aus aufzurufen, sagen Sie einen Nachrichtenhandler, wird dies nicht funktionieren. Wenn ich sage, dass dies nicht funktioniert, funktioniert die Parameterbindung, die den Anforderungskörper an den Aktionsmethodenparameter bindet, nicht. Sie müssen den Anfang suchen, sobald Sie fertig sind. Der Grund dafür, dass es vom Aktionsfilter funktioniert, ist, dass die Bindung bereits stattgefunden hat, wenn der Aktionsfilter in der Pipeline ausgeführt wird. Dies ist eine andere Sache, die Sie beachten müssen.

+0

Re. (2) sollte ich bodyStream.BaseStream.Seek (0, SeekOrigin.Begin); nach var bodyText = bodyStream.ReadToEnd(); ? – tom

+0

Re. (1) danke, dass Sie darauf hingewiesen haben; Ich werde auf absehbare Zeit auf IIS hosten. – tom

+0

Ja, Sie können den Anfang auf der sicheren Seite suchen. – Badri

0

Ich habe InputStream von Http Request benötigt. Ich habe eine WebApp und IOS App, die zu einer Aspx-Seite navigiert, wenn die URL-Anfrage einige Parameter enthält, lese ich die Informationen in der Datenbank und wenn ich keine Parameter in URL-Anfrage finde, lese ich den Anfragetext und ich arbeite gut!

 protected void Page_Load(object sender, EventArgs e) 
     { 
      try 
      { 
       if (string.IsNullOrEmpty(Request.QueryString["AdHoc"]) == false) 
       { 



         string v_AdHocParam = Request.QueryString["AdHoc"]; 
         string [] v_ListParam = v_AdHocParam.Split(new char[] {','}); 

         if (v_ListParam.Length < 2) 
     { 


        DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(WS_DemandeIntervention)); 
        WS_DemandeIntervention response = (WS_DemandeIntervention)jsonSerializer.ReadObject(Request.InputStream); 
.... 
} 


    if (string.IsNullOrEmpty(Request.QueryString["IdBonDeCommande"])==false) 

        { 
    .... 
Verwandte Themen