>  기사  >  백엔드 개발  >  ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

Y2J
Y2J원래의
2017-04-17 15:24:311714검색

지난 블로그 게시물에서 클라이언트의 웹 서비스 사용에 대해 논의했습니다. 이번 글에서는 웹 서비스의 세션상태 사용법을 살펴보겠습니다.

이전 글에 이어지는 내용입니다. 따라서 이전 기사를 빠르게 검토하여 명확한 아이디어를 얻으시기 바랍니다.

이전 글은 여기에서 읽어보실 수 있습니다.

ASP.NET의 세션 객체 를 웹 서비스에서 사용하려면 두 가지 작업이 필요합니다.

1. WebService 클래스는 System.Web.Services.WebService 클래스

를 상속해야 합니다. 2. EnableSession 속성 WebMethod에서값은 true로 설정되어야 합니다

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

CalculatorWebService 클래스를 보면 System.Web.Services.WebService 클래스를 상속했음을 알 수 있습니다. 그러나 EnableSession 속성 값을 true로 설정해야 합니다.

이번 글에서는 아래와 같이 GridView에서 세션 객체를 사용해 최신 계산 결과를 표시해 보겠습니다.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

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;
        }

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

그런 다음 다른 공용 메서드를 도입하여 모든 계산 결과를 반환합니다. 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"];
            }
        }

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

이제 솔루션을 구축하고 브라우저에서 웹 서비스를 볼 수 있습니다.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

웹 서비스에는 Add 및 GetCalculations라는 두 가지 방법이 나열됩니다.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

Add 방법을 클릭합니다. 20, 30 등 두 개의 숫자를 입력한 후 Invoke 버튼을 클릭하면 결과는 50이 됩니다.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

또 다른 계산을 해보자. 30과 70이라고 해보자. 그런 다음 Invoke 버튼을 클릭하면 결과가 100으로 표시됩니다.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명

이제 돌아가서 GetCalculation 메서드를 테스트해 보겠습니다. 그런 다음 Invoke 메서드를 클릭하면 이전에 수행한 모든 계산이 표시됩니다. 문자열배열 형태로 반환됩니다.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명0

이런 식으로 우리 웹 서비스는 예상대로 작동합니다. 이제 웹 애플리케이션에서 이러한 메서드를 사용해 보겠습니다. 이를 위해 Webform1.aspx에서 GridViewcontrol을 끌어다 놓습니다.

<tr>
    <td>
        <asp:GridView ID="gvCalculations" runat="server">
        </asp:GridView>
    </td>
</tr>

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명1

파일 수정 후 코드 앞에는 프록시 클래스를 업데이트해야 합니다. 이를 수행하려면 CalculatorService에서 Update Service Reference.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명2

를 선택합니다.

  此后,在btnAdd_Click事件代码段之中, 加入如下几行代码.

gvCalculations.DataSource = client.GetCalculations();
            gvCalculations.DataBind();

            gvCalculations.HeaderRow.Cells[0].Text = "Recent Calculations";

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명3

  构建我们的解决方案,并在浏览器中查看这个web窗口.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명4

  让我们继续加入两个数字,比如20和30. 而我们会看到虽然我们已经执行了一次计算, You have not performed any calculations 这样的消息还是将会显示出来.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명5

  这基本上是因为web应用程序并没有像Web服务发送相同的SessionId。为此,将web.config文件中的allowCookie设置成true.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명6

  现在我们再来运行这个web窗口并添加一些数字。现在我们就可以看到它按照预期运行了.

ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명7

  因此,这下面有几点要深入思考:

  • 如果Web服务被修改了,客户端应用程序的代理类就要被更新. 为此,在Service Reference夹下面的服务上点击右键,并选择Update Service Reference项.

  • 将allowCookies属性设置成true,以便让客户端应用程序接受从ASMX Web服务返回的cookie,并将其复制到未来所有项Web 服务发起的请求中去. 这就确保了客户端和Web服务之间是维护的同一个Session.

위 내용은 ASP.Net Web 세션 상태 사용 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.