Um das Sitzungsobjekt in ASP.NET in Webdiensten zu verwenden, müssen zwei Dinge getan werden.
1. Die WebService-Klasse muss die System.Web.Services.WebService-Klasse erben
2. Der EnableSession-Attributwert in WebMethod sollte auf true gesetzt sein
Wenn wir uns unsere CalculatorWebService-Klasse ansehen, können wir sehen, dass sie die System.Web.Services.WebService-Klasse geerbt hat. Allerdings muss der Eigenschaftswert „EnableSession“ auf „true“ gesetzt sein.
In diesem Artikel werden wir versuchen, ein Sitzungsobjekt in einer GridView zu verwenden, wie unten gezeigt, um die neuesten Berechnungsergebnisse anzuzeigen
Um dies zu erreichen Dies Der Zweck besteht darin, zunächst an Folgendes zu denken: Ändern Sie die Add-Methode der CalculatorWebService-Klasse.
[WebMethod(EnableSession = true)] public int Add(int firstNumber, int secondNumber) { List<string> calculations; if (Session["CALCULATIONS"] == null) { calculations = new List<string>(); } else { calculations = (List<string>)Session["CALCULATIONS"]; } string strTransaction = firstNumber.ToString() + " + " + secondNumber.ToString() + " = " + (firstNumber + secondNumber).ToString(); calculations.Add(strTransaction); Session["CALCULATIONS"] = calculations; return firstNumber + secondNumber; }
Führen Sie dann eine weitere öffentliche Methode ein, um alle Berechnungsergebnisse zurückzugeben Verwenden Sie das WebMethod-Attribut, um diese Methode zu dekorieren, und setzen Sie das EnableSession-Attribut auf true.
[WebMethod(EnableSession = true)] public List<string> GetCalculations() { if (Session["CALCULATIONS"] == null) { List<string> calculations = new List<string>(); calculations.Add("You have not performed any calculations"); return calculations; } else { return (List<string>)Session["CALCULATIONS"]; } }
Jetzt können wir unsere Lösung erstellen und im Browser unseres Webdienstes anzeigen.
Der Webdienst listet zwei Methoden auf: „Hinzufügen“ und „GetCalculations“.
Klicken Sie auf Methode hinzufügen. Geben wir zwei Zahlen ein, z. B. 20 und 30, und klicken Sie dann auf die Schaltfläche „Aufrufen“. Wir erhalten das Ergebnis 50.
Lassen Sie uns eine weitere Berechnung durchführen, z. B. 30 und 70. Klicken Sie dann auf die Schaltfläche „Invoke“, wir erhalten das Ergebnis als 100.
Jetzt gehen wir zurück und testen unsere GetCalculation-Methode. Klicken Sie dann auf die Invoke-Methode, die nun alle zuvor durchgeführten Berechnungen anzeigt. Sie werden in Form eines StringArrays zurückgegeben.
Auf diese Weise funktioniert unser Webservice wie erwartet. Versuchen wir nun, diese Methoden in unserer Webanwendung zu verwenden. Dazu ziehen wir in Webform1.aspx ein GridViewSteuerelement hinein.
<tr> <td> <asp:GridView ID="gvCalculations" runat="server"> </asp:GridView> </td> </tr>
Vor dem Code nach der Dateiänderung, Wir müssen die Proxy-Klasse aktualisieren. Gehen Sie dazu zu CalculatorService und wählen Sie Update Service Reference.
Fügen Sie anschließend im btnAdd_Click-Ereigniscode-Snippet die folgenden Codezeilen hinzu.
gvCalculations.DataSource = client.GetCalculations(); gvCalculations.DataBind(); gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";
Erstellen Sie unsere Lösung und sehen Sie sich dieses Webfenster in einem Browser an
Lassen Sie uns fortfahren und zwei Zahlen verbinden, z. B. 20 und 30. Und wir werden sehen, dass, obwohl wir eine Berechnung durchgeführt haben, immer noch eine Meldung wie „Sie haben keine Berechnungen durchgeführt“ angezeigt wird.
Dies liegt im Wesentlichen daran, dass die Webanwendung nicht dieselbe SessionId sendet wie der Webdienst. Setzen Sie dazu allowCookie in der web.config-Datei auf true.
Lassen Sie uns nun das Webfenster ausführen und füge einige Zahlen hinzu. Jetzt können wir sehen, dass es wie erwartet läuft.
Deshalb hier ein paar Punkte, über die man gründlich nachdenken sollte:
Wenn der Webdienst geändert wird, muss die Proxy-Klasse der Clientanwendung aktualisiert werden. Klicken Sie dazu mit der rechten Maustaste auf den Dienst im Ordner „Dienstreferenz“ und wählen Sie den Eintrag „Dienstreferenz aktualisieren“.
Setzen Sie das Attribut „allowCookies“ auf „true“, damit die Clientanwendung vom ASMX-Webdienst zurückgegebene Cookies akzeptieren und sie in alle zukünftigen vom Webdienst initiierten Anforderungen kopieren kann. Dadurch wird sichergestellt, dass die Kommunikation zwischen dem Client und dem Webdienst dieselbe Sitzung ist bleibt erhalten.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie den Sitzungsstatus (ASP.Net Web Services). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!