웹 서비스에서 ASP.NET의 세션 개체를 사용하려면 두 가지 작업을 수행해야 합니다.
1. WebService 클래스는 System.Web.Services.WebService 클래스를 상속해야 합니다.
2. WebMethod의 EnableSession 속성 값을 true로 설정해야 합니다
CalculatorWebService 클래스를 보면 System.Web.Services.WebService 클래스를 상속했음을 알 수 있습니다. 그러나 EnableSession 속성 값을 true로 설정해야 합니다.
이번 글에서는 아래와 같이 GridView에서 세션 객체를 사용해 최신 계산 결과를 표시해 보겠습니다.
this 목적은 먼저 CalculatorWebService 클래스의 Add 메서드를 수정하는 것입니다.
[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; }
그런 다음 다른 공용 메서드를 도입하여 모든 계산 결과를 반환합니다. WebMethod 기능을 사용하여 이 메서드를 수정합니다. EnableSession 속성을 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"]; } }
이제 솔루션을 구축하고 브라우저에서 웹 서비스를 볼 수 있습니다.
웹 서비스에는 Add 및 GetCalculations라는 두 가지 방법이 나열됩니다.
Add 방법을 클릭합니다. 20, 30 등 두 개의 숫자를 입력한 후 Invoke 버튼을 클릭하면 결과는 50이 됩니다.
또 다른 계산을 해보자. 30과 70이라고 해보자. 그런 다음 Invoke 버튼을 클릭하면 결과가 100으로 표시됩니다.
이제 돌아가서 GetCalculation 메서드를 테스트해 보겠습니다. 그런 다음 Invoke 메서드를 클릭하면 이전에 수행한 모든 계산이 표시됩니다. 문자열배열 형태로 반환됩니다.
이런 식으로 우리 웹 서비스는 예상대로 작동합니다. 이제 웹 애플리케이션에서 이러한 메서드를 사용해 보겠습니다. 이를 위해 Webform1.aspx에서 GridView컨트롤을 끌어다 놓습니다.
<tr> <td> <asp:GridView ID="gvCalculations" runat="server"> </asp:GridView> </td> </tr>
파일 수정 후 코드 앞에는 프록시 클래스를 업데이트해야 합니다. 이렇게 하려면 CalculatorService로 이동하여 서비스 참조 업데이트를 선택하세요.
그런 다음 btnAdd_Click 이벤트 코드 조각에 다음 코드 줄을 추가하세요.
gvCalculations.DataSource = client.GetCalculations(); gvCalculations.DataBind(); gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";
솔루션을 구축하고 브라우저에서 이 웹 창을 확인하세요.
20과 30이라는 두 숫자를 결합해 보겠습니다. . 그리고 계산을 수행했지만 "계산을 수행하지 않았습니다"라는 메시지가 계속 표시되는 것을 볼 수 있습니다.
이는 기본적으로 웹 애플리케이션이 웹 서비스와 동일한 SessionId를 전송하지 않기 때문입니다. 그러기 위해서는 web.config 파일의 allowCookie를 true로 설정하면 됩니다.
이제 다시 웹을 실행해 보겠습니다. 창을 열고 숫자를 추가하세요. 이제 예상대로 실행되고 있음을 알 수 있습니다.
따라서 몇 가지 깊이 생각해 봐야 할 사항이 있습니다.
웹 서비스가 수정되면 클라이언트 애플리케이션의 프록시 클래스가 업데이트됩니다. 이렇게 하려면 서비스 참조 폴더 아래에서 서비스를 마우스 오른쪽 버튼으로 클릭하고 서비스 참조 업데이트 항목을 선택하세요.
클라이언트 애플리케이션이 ASMX 웹 서비스에서 반환된 쿠키를 수락하고 웹 서비스에서 시작되는 모든 향후 요청에 복사할 수 있도록 하려면 allowedCookies 속성을 true로 설정합니다. 이렇게 하면 클라이언트와 웹 서비스 간의 통신이 동일한 세션이 됩니다. 유지됩니다.
위 내용은 세션 상태 사용 방법(ASP.Net 웹 서비스)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!