WebMethod를 호출 할 때마다 웹 서비스 생성자가 호출되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/830207

문제

웹 메드를 호출 할 때마다 웹 서비스 생성자가 호출됩니다. 이것은 내가 추가하는 새로운 기능에 문제가 생기고 있으며, 내가 일을 일으키기 위해 내가 무엇을하고 있는지 알 수 없습니다. 내가 WebService를 새롭게하는 유일한 곳은 Global.asax.cs의 application_start에 있지만 코드를 제거하는 경우 new 웹 서비스는 웹 메드를 호출 할 때마다 생성자를 여전히 호출합니다.

.AMSX 파일을 탐색하고 WebMethod를 그런 식으로 호출하여 이것을 테스트했으며 웹 서비스를 참조하는 테스트 콘솔 응용 프로그램을 만들었으며 방법을 그런 식으로 호출 할 것입니다. 이 두 가지 모두 동일한 결과를 제공합니다.

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

편집하다:
Windows 서비스를 설문 조사하는 하트 비트 스레드를 만들려고합니다. 해시 테이블 (여러 스레드가 여러 서비스를 폴링하는 여러 스레드)에 결과를 저장하려고합니다. Windows 서비스를 폴링하는 데 사용되는 WebMethod를 변경하여 Hashtable의 결과를 얻었습니다. 우리는이 웹 메드 호출의 속도를 높이려고 노력하고 있습니다.

도움이 되었습니까?

해결책

웹 메소드를 호출 할 때마다 새로운 웹 서비스 인스턴스가 생성됩니다. 이것은 의도 된 동작입니다. 웹 서비스는 Sationseless이므로 서비스 인스턴스가 웹 메소드 호출 사이에 살아 있지 않으므로 웹 서비스의 멤버 (필드, 속성)에 상태를 저장할 수 없습니다.

웹 메소드 호출 사이에 일부 값/상태를 저장하려면 해당 목적으로 ASP.NET 세션 또는 데이터베이스를 사용해야합니다.

자세한 내용은이 질문을 참조하십시오. 이것이 이런 식으로 작동해야합니까?

다른 팁

오류 ... 이것은 디자인에 의한 일종의입니다. 당신은 당신이 얻는 문제와 당신이 달성하려는 것을 설명 할 수 있습니까? 나는 당신이 당신의 디자인을 여기에서 조금 리팩터링해야한다고 생각합니다.

Stateful Services를 지원하는 WCF로 전환 할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top