Use less global variables (#1064)
This commit is contained in:
parent
5c2df180fc
commit
074264cd3a
|
|
@ -12,12 +12,21 @@
|
||||||
#include "SRWExclusiveLock.h"
|
#include "SRWExclusiveLock.h"
|
||||||
#include "GlobalVersionUtility.h"
|
#include "GlobalVersionUtility.h"
|
||||||
#include "exceptions.h"
|
#include "exceptions.h"
|
||||||
#include "HandleWrapper.h"
|
|
||||||
#include "PollingAppOfflineApplication.h"
|
#include "PollingAppOfflineApplication.h"
|
||||||
|
#include "EventLog.h"
|
||||||
|
|
||||||
|
extern HINSTANCE g_hModule;
|
||||||
|
|
||||||
const PCWSTR APPLICATION_INFO::s_pwzAspnetcoreInProcessRequestHandlerName = L"aspnetcorev2_inprocess.dll";
|
const PCWSTR APPLICATION_INFO::s_pwzAspnetcoreInProcessRequestHandlerName = L"aspnetcorev2_inprocess.dll";
|
||||||
const PCWSTR APPLICATION_INFO::s_pwzAspnetcoreOutOfProcessRequestHandlerName = L"aspnetcorev2_outofprocess.dll";
|
const PCWSTR APPLICATION_INFO::s_pwzAspnetcoreOutOfProcessRequestHandlerName = L"aspnetcorev2_outofprocess.dll";
|
||||||
|
|
||||||
|
SRWLOCK APPLICATION_INFO::s_requestHandlerLoadLock {};
|
||||||
|
bool APPLICATION_INFO::s_fAspnetcoreRHAssemblyLoaded = false;
|
||||||
|
bool APPLICATION_INFO::s_fAspnetcoreRHLoadedError = false;
|
||||||
|
HMODULE APPLICATION_INFO::s_hAspnetCoreRH = nullptr;
|
||||||
|
|
||||||
|
PFN_ASPNETCORE_CREATE_APPLICATION APPLICATION_INFO::s_pfnAspNetCoreCreateApplication = nullptr;
|
||||||
|
|
||||||
APPLICATION_INFO::~APPLICATION_INFO()
|
APPLICATION_INFO::~APPLICATION_INFO()
|
||||||
{
|
{
|
||||||
if (m_pApplication != NULL)
|
if (m_pApplication != NULL)
|
||||||
|
|
@ -39,23 +48,14 @@ APPLICATION_INFO::~APPLICATION_INFO()
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
APPLICATION_INFO::Initialize(
|
APPLICATION_INFO::Initialize(
|
||||||
_In_ IHttpServer *pServer,
|
_In_ IHttpApplication &pApplication
|
||||||
_In_ IHttpApplication *pApplication
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
HRESULT hr = S_OK;
|
m_pConfiguration = new ASPNETCORE_SHIM_CONFIG();
|
||||||
|
RETURN_IF_FAILED(m_pConfiguration->Populate(&m_pServer, &pApplication));
|
||||||
|
RETURN_IF_FAILED(m_struInfoKey.Copy(pApplication.GetApplicationId()));
|
||||||
|
|
||||||
DBG_ASSERT(pServer);
|
return S_OK;
|
||||||
DBG_ASSERT(pApplication);
|
|
||||||
|
|
||||||
// todo: make sure Initialize should be called only once
|
|
||||||
m_pServer = pServer;
|
|
||||||
FINISHED_IF_NULL_ALLOC(m_pConfiguration = new ASPNETCORE_SHIM_CONFIG());
|
|
||||||
FINISHED_IF_FAILED(m_pConfiguration->Populate(m_pServer, pApplication));
|
|
||||||
FINISHED_IF_FAILED(m_struInfoKey.Copy(pApplication->GetApplicationId()));
|
|
||||||
|
|
||||||
Finished:
|
|
||||||
return hr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -125,7 +125,7 @@ APPLICATION_INFO::EnsureApplicationCreated(
|
||||||
};
|
};
|
||||||
LOG_INFO("Creating handler application");
|
LOG_INFO("Creating handler application");
|
||||||
FINISHED_IF_FAILED(m_pfnAspNetCoreCreateApplication(
|
FINISHED_IF_FAILED(m_pfnAspNetCoreCreateApplication(
|
||||||
m_pServer,
|
&m_pServer,
|
||||||
pHttpContext->GetApplication(),
|
pHttpContext->GetApplication(),
|
||||||
parameters.data(),
|
parameters.data(),
|
||||||
static_cast<DWORD>(parameters.size()),
|
static_cast<DWORD>(parameters.size()),
|
||||||
|
|
@ -157,19 +157,18 @@ APPLICATION_INFO::FindRequestHandlerAssembly(STRU& location)
|
||||||
PCWSTR pstrHandlerDllName;
|
PCWSTR pstrHandlerDllName;
|
||||||
STACK_STRU(struFileName, 256);
|
STACK_STRU(struFileName, 256);
|
||||||
|
|
||||||
if (g_fAspnetcoreRHLoadedError)
|
if (s_fAspnetcoreRHLoadedError)
|
||||||
{
|
{
|
||||||
FINISHED(E_APPLICATION_ACTIVATION_EXEC_FAILURE);
|
FINISHED(E_APPLICATION_ACTIVATION_EXEC_FAILURE);
|
||||||
}
|
}
|
||||||
else if (!g_fAspnetcoreRHAssemblyLoaded)
|
else if (!s_fAspnetcoreRHAssemblyLoaded)
|
||||||
{
|
{
|
||||||
SRWExclusiveLock lock(g_srwLock);
|
SRWExclusiveLock lock(s_requestHandlerLoadLock);
|
||||||
|
if (s_fAspnetcoreRHLoadedError)
|
||||||
if (g_fAspnetcoreRHLoadedError)
|
|
||||||
{
|
{
|
||||||
FINISHED(E_APPLICATION_ACTIVATION_EXEC_FAILURE);
|
FINISHED(E_APPLICATION_ACTIVATION_EXEC_FAILURE);
|
||||||
}
|
}
|
||||||
if (g_fAspnetcoreRHAssemblyLoaded)
|
if (s_fAspnetcoreRHAssemblyLoaded)
|
||||||
{
|
{
|
||||||
FINISHED(S_OK);
|
FINISHED(S_OK);
|
||||||
}
|
}
|
||||||
|
|
@ -184,9 +183,9 @@ APPLICATION_INFO::FindRequestHandlerAssembly(STRU& location)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to see if RH is already loaded
|
// Try to see if RH is already loaded
|
||||||
g_hAspnetCoreRH = GetModuleHandle(pstrHandlerDllName);
|
s_hAspnetCoreRH = GetModuleHandle(pstrHandlerDllName);
|
||||||
|
|
||||||
if (g_hAspnetCoreRH == NULL)
|
if (s_hAspnetCoreRH == NULL)
|
||||||
{
|
{
|
||||||
if (m_pConfiguration->QueryHostingModel() == APP_HOSTING_MODEL::HOSTING_IN_PROCESS)
|
if (m_pConfiguration->QueryHostingModel() == APP_HOSTING_MODEL::HOSTING_IN_PROCESS)
|
||||||
{
|
{
|
||||||
|
|
@ -229,22 +228,22 @@ APPLICATION_INFO::FindRequestHandlerAssembly(STRU& location)
|
||||||
|
|
||||||
WLOG_INFOF(L"Loading request handler: %s", struFileName.QueryStr());
|
WLOG_INFOF(L"Loading request handler: %s", struFileName.QueryStr());
|
||||||
|
|
||||||
g_hAspnetCoreRH = LoadLibraryW(struFileName.QueryStr());
|
s_hAspnetCoreRH = LoadLibraryW(struFileName.QueryStr());
|
||||||
|
|
||||||
if (g_hAspnetCoreRH == NULL)
|
if (s_hAspnetCoreRH == NULL)
|
||||||
{
|
{
|
||||||
FINISHED(HRESULT_FROM_WIN32(GetLastError()));
|
FINISHED(HRESULT_FROM_WIN32(GetLastError()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
g_pfnAspNetCoreCreateApplication = (PFN_ASPNETCORE_CREATE_APPLICATION)
|
s_pfnAspNetCoreCreateApplication = (PFN_ASPNETCORE_CREATE_APPLICATION)
|
||||||
GetProcAddress(g_hAspnetCoreRH, "CreateApplication");
|
GetProcAddress(s_hAspnetCoreRH, "CreateApplication");
|
||||||
if (g_pfnAspNetCoreCreateApplication == NULL)
|
if (s_pfnAspNetCoreCreateApplication == NULL)
|
||||||
{
|
{
|
||||||
FINISHED(HRESULT_FROM_WIN32(GetLastError()));
|
FINISHED(HRESULT_FROM_WIN32(GetLastError()));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_fAspnetcoreRHAssemblyLoaded = TRUE;
|
s_fAspnetcoreRHAssemblyLoaded = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Finished:
|
Finished:
|
||||||
|
|
@ -252,11 +251,11 @@ Finished:
|
||||||
// Question: we remember the load failure so that we will not try again.
|
// Question: we remember the load failure so that we will not try again.
|
||||||
// User needs to check whether the fuction pointer is NULL
|
// User needs to check whether the fuction pointer is NULL
|
||||||
//
|
//
|
||||||
m_pfnAspNetCoreCreateApplication = g_pfnAspNetCoreCreateApplication;
|
m_pfnAspNetCoreCreateApplication = s_pfnAspNetCoreCreateApplication;
|
||||||
|
|
||||||
if (!g_fAspnetcoreRHLoadedError && FAILED(hr))
|
if (!s_fAspnetcoreRHLoadedError && FAILED(hr))
|
||||||
{
|
{
|
||||||
g_fAspnetcoreRHLoadedError = TRUE;
|
s_fAspnetcoreRHLoadedError = TRUE;
|
||||||
}
|
}
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
@ -457,7 +456,7 @@ APPLICATION_INFO::RecycleApplication()
|
||||||
if (m_pConfiguration->QueryHostingModel() == HOSTING_IN_PROCESS)
|
if (m_pConfiguration->QueryHostingModel() == HOSTING_IN_PROCESS)
|
||||||
{
|
{
|
||||||
// In process application failed to start for whatever reason, need to recycle the work process
|
// In process application failed to start for whatever reason, need to recycle the work process
|
||||||
m_pServer->RecycleProcess(L"AspNetCore InProcess Recycle Process on Demand");
|
m_pServer.RecycleProcess(L"AspNetCore InProcess Recycle Process on Demand");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -466,7 +465,7 @@ APPLICATION_INFO::RecycleApplication()
|
||||||
if (!g_fRecycleProcessCalled)
|
if (!g_fRecycleProcessCalled)
|
||||||
{
|
{
|
||||||
g_fRecycleProcessCalled = TRUE;
|
g_fRecycleProcessCalled = TRUE;
|
||||||
g_pHttpServer->RecycleProcess(L"On Demand by AspNetCore Module for recycle application failure");
|
m_pServer.RecycleProcess(L"On Demand by AspNetCore Module for recycle application failure");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -23,14 +23,13 @@ HRESULT
|
||||||
);
|
);
|
||||||
|
|
||||||
extern BOOL g_fRecycleProcessCalled;
|
extern BOOL g_fRecycleProcessCalled;
|
||||||
extern PFN_ASPNETCORE_CREATE_APPLICATION g_pfnAspNetCoreCreateApplication;
|
|
||||||
|
|
||||||
class APPLICATION_INFO
|
class APPLICATION_INFO
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
APPLICATION_INFO() :
|
APPLICATION_INFO(_In_ IHttpServer &pServer) :
|
||||||
m_pServer(NULL),
|
m_pServer(pServer),
|
||||||
m_cRefs(1),
|
m_cRefs(1),
|
||||||
m_fValid(FALSE),
|
m_fValid(FALSE),
|
||||||
m_fAppCreationAttempted(FALSE),
|
m_fAppCreationAttempted(FALSE),
|
||||||
|
|
@ -48,11 +47,17 @@ public:
|
||||||
|
|
||||||
virtual
|
virtual
|
||||||
~APPLICATION_INFO();
|
~APPLICATION_INFO();
|
||||||
|
|
||||||
|
static
|
||||||
|
void
|
||||||
|
StaticInitialize()
|
||||||
|
{
|
||||||
|
InitializeSRWLock(&s_requestHandlerLoadLock);
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
Initialize(
|
Initialize(
|
||||||
_In_ IHttpServer *pServer,
|
_In_ IHttpApplication &pApplication
|
||||||
_In_ IHttpApplication *pApplication
|
|
||||||
);
|
);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
@ -125,11 +130,17 @@ private:
|
||||||
ASPNETCORE_SHIM_CONFIG *m_pConfiguration;
|
ASPNETCORE_SHIM_CONFIG *m_pConfiguration;
|
||||||
IAPPLICATION *m_pApplication;
|
IAPPLICATION *m_pApplication;
|
||||||
SRWLOCK m_srwLock;
|
SRWLOCK m_srwLock;
|
||||||
IHttpServer *m_pServer;
|
IHttpServer &m_pServer;
|
||||||
PFN_ASPNETCORE_CREATE_APPLICATION m_pfnAspNetCoreCreateApplication;
|
PFN_ASPNETCORE_CREATE_APPLICATION m_pfnAspNetCoreCreateApplication;
|
||||||
|
|
||||||
static const PCWSTR s_pwzAspnetcoreInProcessRequestHandlerName;
|
static const PCWSTR s_pwzAspnetcoreInProcessRequestHandlerName;
|
||||||
static const PCWSTR s_pwzAspnetcoreOutOfProcessRequestHandlerName;
|
static const PCWSTR s_pwzAspnetcoreOutOfProcessRequestHandlerName;
|
||||||
|
|
||||||
|
static SRWLOCK s_requestHandlerLoadLock;
|
||||||
|
static bool s_fAspnetcoreRHAssemblyLoaded;
|
||||||
|
static bool s_fAspnetcoreRHLoadedError;
|
||||||
|
static HMODULE s_hAspnetCoreRH;
|
||||||
|
static PFN_ASPNETCORE_CREATE_APPLICATION s_pfnAspNetCoreCreateApplication;
|
||||||
};
|
};
|
||||||
|
|
||||||
class APPLICATION_INFO_HASH :
|
class APPLICATION_INFO_HASH :
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
#include "resources.h"
|
#include "resources.h"
|
||||||
#include "SRWExclusiveLock.h"
|
#include "SRWExclusiveLock.h"
|
||||||
#include "exceptions.h"
|
#include "exceptions.h"
|
||||||
|
#include "EventLog.h"
|
||||||
|
|
||||||
|
extern BOOL g_fInShutdown;
|
||||||
|
|
||||||
// The application manager is a singleton across ANCM.
|
// The application manager is a singleton across ANCM.
|
||||||
APPLICATION_MANAGER* APPLICATION_MANAGER::sm_pApplicationManager = NULL;
|
APPLICATION_MANAGER* APPLICATION_MANAGER::sm_pApplicationManager = NULL;
|
||||||
|
|
@ -18,7 +21,6 @@ APPLICATION_MANAGER* APPLICATION_MANAGER::sm_pApplicationManager = NULL;
|
||||||
//
|
//
|
||||||
HRESULT
|
HRESULT
|
||||||
APPLICATION_MANAGER::GetOrCreateApplicationInfo(
|
APPLICATION_MANAGER::GetOrCreateApplicationInfo(
|
||||||
_In_ IHttpServer* pServer,
|
|
||||||
_In_ IHttpContext* pHttpContext,
|
_In_ IHttpContext* pHttpContext,
|
||||||
_Out_ APPLICATION_INFO ** ppApplicationInfo
|
_Out_ APPLICATION_INFO ** ppApplicationInfo
|
||||||
)
|
)
|
||||||
|
|
@ -32,56 +34,37 @@ APPLICATION_MANAGER::GetOrCreateApplicationInfo(
|
||||||
|
|
||||||
STACK_STRU ( strEventMsg, 256 );
|
STACK_STRU ( strEventMsg, 256 );
|
||||||
|
|
||||||
DBG_ASSERT(pServer);
|
|
||||||
DBG_ASSERT(pHttpContext);
|
DBG_ASSERT(pHttpContext);
|
||||||
DBG_ASSERT(ppApplicationInfo);
|
DBG_ASSERT(ppApplicationInfo);
|
||||||
|
|
||||||
*ppApplicationInfo = NULL;
|
*ppApplicationInfo = NULL;
|
||||||
|
IHttpApplication &pApplication = *pHttpContext->GetApplication();
|
||||||
|
|
||||||
if (!m_fDebugInitialize)
|
|
||||||
{
|
|
||||||
SRWExclusiveLock lock(m_srwLock);
|
|
||||||
if (!m_fDebugInitialize)
|
|
||||||
{
|
|
||||||
DebugInitializeFromConfig(*pServer, *pHttpContext->GetApplication());
|
|
||||||
m_fDebugInitialize = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// The configuration path is unique for each application and is used for the
|
// The configuration path is unique for each application and is used for the
|
||||||
// key in the applicationInfoHash.
|
// key in the applicationInfoHash.
|
||||||
pszApplicationId = pHttpContext->GetApplication()->GetApplicationId();
|
pszApplicationId = pApplication.GetApplicationId();
|
||||||
|
|
||||||
// When accessing the m_pApplicationInfoHash, we need to acquire the application manager
|
// When accessing the m_pApplicationInfoHash, we need to acquire the application manager
|
||||||
// lock to avoid races on setting state.
|
// lock to avoid races on setting state.
|
||||||
|
SRWSharedLock lock(m_srwLock);
|
||||||
|
if (!m_fDebugInitialize)
|
||||||
{
|
{
|
||||||
SRWSharedLock lock(m_srwLock);
|
DebugInitializeFromConfig(m_pHttpServer, pApplication);
|
||||||
if (g_fInShutdown)
|
m_fDebugInitialize = TRUE;
|
||||||
{
|
|
||||||
FINISHED(HRESULT_FROM_WIN32(ERROR_SERVER_SHUTDOWN_IN_PROGRESS));
|
|
||||||
}
|
|
||||||
m_pApplicationInfoHash->FindKey(pszApplicationId, ppApplicationInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (g_fInShutdown)
|
||||||
|
{
|
||||||
|
FINISHED(HRESULT_FROM_WIN32(ERROR_SERVER_SHUTDOWN_IN_PROGRESS));
|
||||||
|
}
|
||||||
|
|
||||||
|
m_pApplicationInfoHash->FindKey(pszApplicationId, ppApplicationInfo);
|
||||||
|
|
||||||
if (*ppApplicationInfo == NULL)
|
if (*ppApplicationInfo == NULL)
|
||||||
{
|
{
|
||||||
pApplicationInfo = new APPLICATION_INFO();
|
pApplicationInfo = new APPLICATION_INFO(m_pHttpServer);
|
||||||
|
|
||||||
FINISHED_IF_FAILED(pApplicationInfo->Initialize(pServer, pHttpContext->GetApplication()));
|
FINISHED_IF_FAILED(pApplicationInfo->Initialize(pApplication));
|
||||||
|
|
||||||
SRWExclusiveLock lock(m_srwLock);
|
|
||||||
|
|
||||||
if (g_fInShutdown)
|
|
||||||
{
|
|
||||||
// Already in shuting down. No need to create the application
|
|
||||||
FINISHED(HRESULT_FROM_WIN32(ERROR_SERVER_SHUTDOWN_IN_PROGRESS));
|
|
||||||
}
|
|
||||||
m_pApplicationInfoHash->FindKey(pszApplicationId, ppApplicationInfo);
|
|
||||||
|
|
||||||
if (*ppApplicationInfo != NULL)
|
|
||||||
{
|
|
||||||
// someone else created the application
|
|
||||||
FINISHED(S_OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
hostingModel = pApplicationInfo->QueryConfig()->QueryHostingModel();
|
hostingModel = pApplicationInfo->QueryConfig()->QueryHostingModel();
|
||||||
|
|
||||||
|
|
@ -309,7 +292,7 @@ Finished:
|
||||||
if (!g_fRecycleProcessCalled)
|
if (!g_fRecycleProcessCalled)
|
||||||
{
|
{
|
||||||
g_fRecycleProcessCalled = TRUE;
|
g_fRecycleProcessCalled = TRUE;
|
||||||
g_pHttpServer->RecycleProcess(L"AspNetCore Recycle Process on Demand Due Application Recycle Error");
|
m_pHttpServer.RecycleProcess(L"AspNetCore Recycle Process on Demand Due Application Recycle Error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,15 +27,9 @@ public:
|
||||||
|
|
||||||
static
|
static
|
||||||
APPLICATION_MANAGER*
|
APPLICATION_MANAGER*
|
||||||
GetInstance(
|
GetInstance()
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
if ( sm_pApplicationManager == NULL )
|
assert(sm_pApplicationManager);
|
||||||
{
|
|
||||||
sm_pApplicationManager = new APPLICATION_MANAGER();
|
|
||||||
}
|
|
||||||
|
|
||||||
return sm_pApplicationManager;
|
return sm_pApplicationManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -68,7 +62,6 @@ public:
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
GetOrCreateApplicationInfo(
|
GetOrCreateApplicationInfo(
|
||||||
_In_ IHttpServer* pServer,
|
|
||||||
_In_ IHttpContext* pHttpContext,
|
_In_ IHttpContext* pHttpContext,
|
||||||
_Out_ APPLICATION_INFO ** ppApplicationInfo
|
_Out_ APPLICATION_INFO ** ppApplicationInfo
|
||||||
);
|
);
|
||||||
|
|
@ -92,6 +85,16 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static HRESULT StaticInitialize(IHttpServer& pHttpServer)
|
||||||
|
{
|
||||||
|
assert(!sm_pApplicationManager);
|
||||||
|
sm_pApplicationManager = new APPLICATION_MANAGER(pHttpServer);
|
||||||
|
RETURN_IF_FAILED(sm_pApplicationManager->Initialize());
|
||||||
|
|
||||||
|
APPLICATION_INFO::StaticInitialize();
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
HRESULT Initialize()
|
HRESULT Initialize()
|
||||||
{
|
{
|
||||||
if(m_pApplicationInfoHash == NULL)
|
if(m_pApplicationInfoHash == NULL)
|
||||||
|
|
@ -107,12 +110,11 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//
|
APPLICATION_MANAGER(IHttpServer& pHttpServer) :
|
||||||
// we currently limit the size of m_pstrErrorInfo to 5000, be careful if you want to change its payload
|
m_pApplicationInfoHash(NULL),
|
||||||
//
|
|
||||||
APPLICATION_MANAGER() : m_pApplicationInfoHash(NULL),
|
|
||||||
m_hostingModel(HOSTING_UNKNOWN),
|
m_hostingModel(HOSTING_UNKNOWN),
|
||||||
m_fDebugInitialize(FALSE)
|
m_fDebugInitialize(FALSE),
|
||||||
|
m_pHttpServer(pHttpServer)
|
||||||
{
|
{
|
||||||
InitializeSRWLock(&m_srwLock);
|
InitializeSRWLock(&m_srwLock);
|
||||||
}
|
}
|
||||||
|
|
@ -120,6 +122,7 @@ private:
|
||||||
APPLICATION_INFO_HASH *m_pApplicationInfoHash;
|
APPLICATION_INFO_HASH *m_pApplicationInfoHash;
|
||||||
static APPLICATION_MANAGER *sm_pApplicationManager;
|
static APPLICATION_MANAGER *sm_pApplicationManager;
|
||||||
SRWLOCK m_srwLock;
|
SRWLOCK m_srwLock;
|
||||||
APP_HOSTING_MODEL m_hostingModel;
|
APP_HOSTING_MODEL m_hostingModel;
|
||||||
BOOL m_fDebugInitialize;
|
BOOL m_fDebugInitialize;
|
||||||
|
IHttpServer &m_pHttpServer;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -13,20 +13,10 @@
|
||||||
|
|
||||||
DECLARE_DEBUG_PRINT_OBJECT("aspnetcorev2.dll");
|
DECLARE_DEBUG_PRINT_OBJECT("aspnetcorev2.dll");
|
||||||
|
|
||||||
HTTP_MODULE_ID g_pModuleId = NULL;
|
|
||||||
IHttpServer * g_pHttpServer = NULL;
|
|
||||||
HANDLE g_hEventLog = NULL;
|
HANDLE g_hEventLog = NULL;
|
||||||
BOOL g_fRecycleProcessCalled = FALSE;
|
BOOL g_fRecycleProcessCalled = FALSE;
|
||||||
PCWSTR g_pszModuleName = NULL;
|
|
||||||
HINSTANCE g_hModule;
|
HINSTANCE g_hModule;
|
||||||
HMODULE g_hAspnetCoreRH = NULL;
|
|
||||||
BOOL g_fAspnetcoreRHAssemblyLoaded = FALSE;
|
|
||||||
BOOL g_fAspnetcoreRHLoadedError = FALSE;
|
|
||||||
BOOL g_fInShutdown = FALSE;
|
BOOL g_fInShutdown = FALSE;
|
||||||
DWORD g_dwActiveServerProcesses = 0;
|
|
||||||
SRWLOCK g_srwLock;
|
|
||||||
|
|
||||||
PFN_ASPNETCORE_CREATE_APPLICATION g_pfnAspNetCoreCreateApplication;
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
StaticCleanup()
|
StaticCleanup()
|
||||||
|
|
@ -100,17 +90,10 @@ HRESULT
|
||||||
BOOL fDisableANCM = FALSE;
|
BOOL fDisableANCM = FALSE;
|
||||||
ASPNET_CORE_PROXY_MODULE_FACTORY * pFactory = NULL;
|
ASPNET_CORE_PROXY_MODULE_FACTORY * pFactory = NULL;
|
||||||
ASPNET_CORE_GLOBAL_MODULE * pGlobalModule = NULL;
|
ASPNET_CORE_GLOBAL_MODULE * pGlobalModule = NULL;
|
||||||
APPLICATION_MANAGER * pApplicationManager = NULL;
|
|
||||||
|
|
||||||
UNREFERENCED_PARAMETER(dwServerVersion);
|
UNREFERENCED_PARAMETER(dwServerVersion);
|
||||||
|
|
||||||
InitializeSRWLock(&g_srwLock);
|
if (pHttpServer->IsCommandLineLaunch())
|
||||||
|
|
||||||
g_pModuleId = pModuleInfo->GetId();
|
|
||||||
g_pszModuleName = pModuleInfo->GetName();
|
|
||||||
g_pHttpServer = pHttpServer;
|
|
||||||
|
|
||||||
if (g_pHttpServer->IsCommandLineLaunch())
|
|
||||||
{
|
{
|
||||||
g_hEventLog = RegisterEventSource(NULL, ASPNETCORE_IISEXPRESS_EVENT_PROVIDER);
|
g_hEventLog = RegisterEventSource(NULL, ASPNETCORE_IISEXPRESS_EVENT_PROVIDER);
|
||||||
}
|
}
|
||||||
|
|
@ -175,13 +158,12 @@ HRESULT
|
||||||
0));
|
0));
|
||||||
|
|
||||||
pFactory = NULL;
|
pFactory = NULL;
|
||||||
pApplicationManager = APPLICATION_MANAGER::GetInstance();
|
|
||||||
|
|
||||||
FINISHED_IF_FAILED(pApplicationManager->Initialize());
|
FINISHED_IF_FAILED(APPLICATION_MANAGER::StaticInitialize(*pHttpServer));
|
||||||
|
|
||||||
pGlobalModule = NULL;
|
pGlobalModule = NULL;
|
||||||
|
|
||||||
pGlobalModule = new ASPNET_CORE_GLOBAL_MODULE(pApplicationManager);
|
pGlobalModule = new ASPNET_CORE_GLOBAL_MODULE(APPLICATION_MANAGER::GetInstance());
|
||||||
|
|
||||||
FINISHED_IF_FAILED(pModuleInfo->SetGlobalNotifications(
|
FINISHED_IF_FAILED(pModuleInfo->SetGlobalNotifications(
|
||||||
pGlobalModule,
|
pGlobalModule,
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include "globalmodule.h"
|
#include "globalmodule.h"
|
||||||
|
|
||||||
|
extern BOOL g_fInShutdown;
|
||||||
|
|
||||||
ASPNET_CORE_GLOBAL_MODULE::ASPNET_CORE_GLOBAL_MODULE(
|
ASPNET_CORE_GLOBAL_MODULE::ASPNET_CORE_GLOBAL_MODULE(
|
||||||
APPLICATION_MANAGER* pApplicationManager)
|
APPLICATION_MANAGER* pApplicationManager)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,9 @@
|
||||||
#include "applicationinfo.h"
|
#include "applicationinfo.h"
|
||||||
#include "acache.h"
|
#include "acache.h"
|
||||||
#include "exceptions.h"
|
#include "exceptions.h"
|
||||||
|
|
||||||
|
extern BOOL g_fInShutdown;
|
||||||
|
|
||||||
__override
|
__override
|
||||||
HRESULT
|
HRESULT
|
||||||
ASPNET_CORE_PROXY_MODULE_FACTORY::GetHttpModule(
|
ASPNET_CORE_PROXY_MODULE_FACTORY::GetHttpModule(
|
||||||
|
|
@ -83,7 +86,6 @@ ASPNET_CORE_PROXY_MODULE::OnExecuteRequestHandler(
|
||||||
pApplicationManager = APPLICATION_MANAGER::GetInstance();
|
pApplicationManager = APPLICATION_MANAGER::GetInstance();
|
||||||
|
|
||||||
FINISHED_IF_FAILED(pApplicationManager->GetOrCreateApplicationInfo(
|
FINISHED_IF_FAILED(pApplicationManager->GetOrCreateApplicationInfo(
|
||||||
g_pHttpServer,
|
|
||||||
pHttpContext,
|
pHttpContext,
|
||||||
&m_pApplicationInfo));
|
&m_pApplicationInfo));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,6 @@
|
||||||
#include "irequesthandler.h"
|
#include "irequesthandler.h"
|
||||||
|
|
||||||
extern HTTP_MODULE_ID g_pModuleId;
|
extern HTTP_MODULE_ID g_pModuleId;
|
||||||
extern IHttpServer *g_pHttpServer;
|
|
||||||
extern HMODULE g_hAspnetCoreRH;
|
|
||||||
|
|
||||||
class ASPNET_CORE_PROXY_MODULE : public CHttpModule
|
class ASPNET_CORE_PROXY_MODULE : public CHttpModule
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@
|
||||||
//
|
//
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
|
||||||
#define NTDDI_VERSION 0x06010000
|
#define NTDDI_VERSION NTDDI_WIN7
|
||||||
#define WINVER 0x0601
|
#define WINVER _WIN32_WINNT_WIN7
|
||||||
#define _WIN32_WINNT 0x0601
|
#define _WIN32_WINNT 0x0601
|
||||||
|
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
|
|
@ -20,16 +20,4 @@
|
||||||
#include "stringu.h"
|
#include "stringu.h"
|
||||||
#include "stringa.h"
|
#include "stringa.h"
|
||||||
|
|
||||||
extern PVOID g_pModuleId;
|
|
||||||
extern BOOL g_fAspnetcoreRHAssemblyLoaded;
|
|
||||||
extern BOOL g_fAspnetcoreRHLoadedError;
|
|
||||||
extern BOOL g_fInShutdown;
|
|
||||||
extern BOOL g_fEnableReferenceCountTracing;
|
|
||||||
extern DWORD g_dwActiveServerProcesses;
|
|
||||||
extern HINSTANCE g_hModule;
|
|
||||||
extern HMODULE g_hAspnetCoreRH;
|
|
||||||
extern SRWLOCK g_srwLock;
|
|
||||||
extern PCWSTR g_pwzAspnetcoreRequestHandlerName;
|
|
||||||
extern HANDLE g_hEventLog;
|
|
||||||
|
|
||||||
#pragma warning( error : 4091)
|
#pragma warning( error : 4091)
|
||||||
|
|
|
||||||
|
|
@ -6,4 +6,6 @@
|
||||||
#include "Utility.h"
|
#include "Utility.h"
|
||||||
#include "resources.h"
|
#include "resources.h"
|
||||||
|
|
||||||
|
extern HANDLE g_hEventLog;
|
||||||
|
|
||||||
#define EVENTLOG(log, name, ...) UTILITY::LogEventF(log, ASPNETCORE_EVENT_ ## name ## _LEVEL, ASPNETCORE_EVENT_ ## name, ASPNETCORE_EVENT_ ## name ## _MSG, __VA_ARGS__)
|
#define EVENTLOG(log, name, ...) UTILITY::LogEventF(log, ASPNETCORE_EVENT_ ## name ## _LEVEL, ASPNETCORE_EVENT_ ## name, ASPNETCORE_EVENT_ ## name ## _MSG, __VA_ARGS__)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue