IIS가 스레드에서 정적 변수를 처리하는 방법을 이해하는데 약간의 문제가 있습니다. IIS가 4 개의 요청을 동시에 처리 할 수 있고 4 개의 개별 스레드가 웹 사이트를 실행하는 것과 동일한 4 개의 작업자 프로세스가있는 경우 필자는 항상 이해하고 있습니다. 모든 정적 변수는 각 개별 스레드에서 지속됩니다. 내가 혼란스러워하는 이유는 연결 및 캐싱 트랜잭션을 관리하는 범위를 가지고 있기 때문입니다. 내가 응용 프로그램을 테스트 할 때 나는 어떤 이슈도 알아 차리지 못한다. 그러나 그것을 컴파일하고 두 개의 다른 위치에서 동시에 충돌 한 후에 나는 일종의 갈등을 일으키는 것 같다. 이제 이러한 작업자 프로세스가 분리되어 있다면 왜 이것이 될까요? 한 번에 하나의 작업 스레드에서 둘 이상의 요청을 처리 할 수 있습니까? 이러한 기능을 관리하는 개체의 에스컬레이션을 처리하기 위해 이러한 정적 멤버에 보유 된 고유 ID가 있으며 동일한 개체에 액세스하려고 시도하는 것처럼 보입니다.정적 멤버 변수가 IIS에서 한 번에 둘 이상의 요청에 의해 액세스되는 것을 방지하려면 어떻게합니까?
저는 x64 시스템의 Vista의 IIS 서버에서 실행하고 있습니다.
하나의 요청에 스레드를 유지해야하는 값을 편집
, 나는 트릭을 할 것으로 보인다 Web.HttpContext.Current.Items
으로이 값을 넣습니다.
<ThreadStatic()>
을 사용할 수는 있지만 요청 프로세스가 진행되는 동안 제공되지 않을 수 있습니다. 내가 가지고있는 하나의 모듈에서, 변수가 이미 그 스레드가 cahcing 서버에 대한 설정을로드했는지를 나타낼 때만 사용됩니다. true이면 tread (asp.net 아님)가 캐싱 서버에서 데이터를 가져올 준비가되었습니다.
트랜잭션 범위가 asp.net에서이 문제를 처리하는 방법을 알고 있습니까? – Middletone
트랜잭션 범위는 관련이 없습니다. –
개체는 트랜잭션 범위의 동작을 모방하기 위해 만들어 지므로 DB 트랜잭션 격리 대신 다른 개체를 처리합니다. – Middletone