asp.net 응용 프로그램 개발에 대한 경험이 없습니다.모든 새 스레드에 대해 HttpModule Init() 메서드 호출을 강제하는 방법
SxS 등록이 필요없는 Componente COM을 사용하는 웹 응용 프로그램을 개발하고 싶습니다.
이 MSDN Article, Http Module 다음 그 인쇄 스레드 ID HttpModule을에게
public class SyncModule : IHttpModule
{
private MyEventHandler _eventHandler = null;
public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(OnBeginRequest);
// Code that enable COM SxS registration-free
EnableSxSForThisThread_with_CreateActCtx();
int id = System.Threading.Thread.CurrentThread.ManagedThreadId;
Debug.WriteLine("MyModule Thread Id: " + id);
}
public void Dispose() { }
public delegate void MyEventHandler(Object s, EventArgs e);
public event MyEventHandler MyEvent
{
add { _eventHandler += value; }
remove { _eventHandler -= value; }
}
public void OnBeginRequest(Object s, EventArgs e)
{
HttpApplication app = s as HttpApplication;
int id = System.Threading.Thread.CurrentThread.ManagedThreadId;
Debug.WriteLine("OnBeginRequest Thread Id: " + id);
Debug.WriteLine("OnBeginRequest: Hello from OnBeginRequest in custom module.<br>");
if (_eventHandler != null)
_eventHandler(this, null);
}
공지 사항을 구현했습니다.
public void Init(HttpApplication app)
{
...
int id = System.Threading.Thread.CurrentThread.ManagedThreadId;
Debug.WriteLine("MyModule Thread Id: " + id);
}
그리고 나는 내 웹 응용 프로그램이 퍼팅과 연결이 내부 'Web.confg'
<httpModules>
<add name="MyModule" type="MyModule.SyncModule, MyModule" />
</httpModules>
하지만 같은 스레드에 대한, 내 웹 응용 프로그램을 실행하고 나는 성공과 componente의 COM을 호출 할 수 있습니다 HttpModule Init을 실행합니다.
단추를 클릭하여 다시 실행하면 COM을 사용하는 스레드가 변경되고 HttpModule Init()가 호출되지 않아 실패합니다.
Init() 및 CreateActCtx를 올바르게 호출하는 새로운 스레드를 모두 감지하는 방법은 무엇입니까? 가능합니까?
이 항목과 ObjectToEnabledSxS를 HttpModule 클래스 속성으로 추가하려고했습니다. 시작시 스레드 ID 5와 10이 초기화되고 스레드 ID 2가 스레드 ID 5로 초기화 된 ObjectToEnabledSxS의 Dispose()를 호출합니다. 스레드 ID를 얻기 위해 System.Threading.Thread.CurrentThread.ManagedThreadId를 사용하고 있습니다. 어쩌면 HttpModule이 죽고 GC가 Dispose()를 호출할까요? – Cobaia
내 ObjectToEnableSxS는 활성화 된 특정 활성화 컨텍스트를 고유하게 식별하는 쿠키를 반환하는 ActivateActCtx를 호출합니다. 스레드 ID 5와 10은 쿠키에 대해 동일한 값을 반환합니다. ActivateActCtx http://msdn.microsoft.com/en-us/library/aa374151(v=vs.85).aspx – Cobaia