WCF를 사용하는 3 계층 응용 프로그램 중 일부는 다단계 테스트를 사용하여 온라인 데이터에 액세스 할 수없는 이유를 확인합니다. 처음에는
, 우리는 컴퓨터를 격리하면 우리가이 API를 사용하여 인터넷에 액세스 할 수있는 경우
ManagementScope scope = new ManagementScope(@"\root\nap");
scope.Connect();
ObjectQuery query = new ObjectQuery("SELECT * FROM NAP_Client");
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
{
int isolationState = 0;
foreach (ManagementObject m in searcher.Get())
{
isolationState = int.Parse(m["systemIsolationState"].ToString());
}
if (isolationState == 3) // 3 means in quarantine
{
//NAP is preventing the computer access to the network
....do something
}
}
그런 다음 우리가 테스트를 진행 (윈도우의 출시 이벤트 2008에서이 기능을보고) 확인 :
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out ConnectedStateFlag lpdwFlags, int dwReserved);
[Flags]
private enum ConnectedStateFlag : int
{
Configured = 0x40,
LAN = 0x02,
RasInstalled = 0x10,
Modem = 0x01,
ModemBusy = 0x08,
Offline = 0x20,
Proxy = 0x04
}
그런 다음 소켓을 열고 서버 주소에 연결을 시도합니다.
그런 다음 웹 서비스 인스턴스를 만들어 IIS가 제대로 실행되고 있는지 확인하고 오류가 발생하지 않는지 확인합니다.
그런 다음 웹 서비스에서 데이터베이스가 온라인인지 여부를 알려주는 함수를 호출합니다.
그러나 대답은 위에 대한 내 질문이 관리되는 환경에서 관리되지 않는 코드를 사용하는 동안, 어떻게 메모리 누출을 방지 할 수 있다는 것입니다? –