2009-05-06 3 views
4

webmethod를 호출 할 때마다 내 webservice 생성자가 호출됩니다. 이것은 내가 추가하고있는 일부 새로운 기능에 몇 가지 문제를 일으키고 있으며, 나는 이것을 잘못하도록 뭘하고 있는지 알 수 없다. 내가 webservice를 새로 고치고있는 유일한 곳은 global.asax.cs의 Application_Start이지만, new 웹 서비스 코드를 제거하면 webmethod를 호출 할 때마다 여전히 생성자를 호출합니다.

.asmx 파일을 탐색하고 webmethod의 방법을 호출하여이를 테스트했으며 webservice에 대한 참조가있는 테스트 콘솔 응용 프로그램을 만들고 그 방법을 호출합니다. 이 두 가지 모두 동일한 결과를 제공합니다.

ASP.NET 1.1에서 C#을 사용하고 있습니다. 어떤 아이디어?

편집 :
내가 그 여론 조사 Windows 서비스를 하트 비트 스레드를 만들려고하고 있습니다. 결과를 해시 테이블 (여러 스레드가 여러 서비스를 폴링)에 저장하려고합니다. 나는 해시 테이블에서 결과를 얻기 위해 (윈도우 서비스를 폴링하는 데 사용되는) webmethod를 변경했다. 우리는이 webmethod 호출의 속도를 높이려고 노력하고 있습니다.webmethod를 호출 할 때마다 내 WebService 생성자가 호출되는 이유는 무엇입니까?

답변

18

웹 메서드를 호출 할 때마다 웹 서비스의 새 인스턴스가 만들어집니다. 이는 의도 한 동작입니다. 웹 서비스는 상태 비 저장이므로 서비스의 인스턴스가 웹 메서드 호출간에 유지되지 않으므로 웹 서비스의 멤버 (필드, 속성)에 상태를 저장할 수 없습니다.

웹 메서드 호출간에 값/상태를 저장하려면 ASP.NET 세션이나 데이터베이스를 사용해야합니다.

은 자세한 내용은이 질문을 참조 : Is this supposed to work this way?

+0

고마워요, 정말로 최고의 답변, 정말 고마워요! –

0

는 잘못 ...이 난 두려워 디자인으로 가지입니다. 당신이 얻고있는 문제와 당신이 습득하려고 노력하고있는 것을 기술 할 수 있습니까, 저는 당신이 당신의 디자인을 약간 리팩토링 할 필요가 있다고 생각합니다.

+0

우리가하려는 일을 설명하기 위해 원래 게시물을 편집했습니다. –

0

스테이트 풀 서비스를 지원하는 WCF로 전환 할 수도 있습니다.

+0

불행하게도 우리는이 버전의 1.1 프레임 워크에 '붙어 있습니다'. –