Microsoft.xmlhttp를 사용하여 프록시 구성을 어떻게 지정할 수 있습니까?

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

문제

나는 클래식 ASP 페이지에서 정보에 이르기까지 다른 사이트로 Microsoft.xmlhttp를 사용하고 있습니다 ...

Fiddler에서 무슨 일이 일어나고 있는지 검사하고 그렇게하려면 Microsoft.xmlhttp를 프록시를 사용하려면 구성하는 방법을 찾아야합니다 ...

가능합니까? Microsoft.xmlhttp는 어디에서 구성을 얻습니까?

정말 감사합니다

도움이 되었습니까?

해결책

여기에 몇 가지가 정리되어야한다고 생각합니다.

progid "microsoft.xmlhttp"는 "msxml2.xmlhttp"와 같은 클래스를 가리 킵니다. 이 클래스는 Internet Explorer가 사용하는 Wininet HTTP 프로토콜 스택을 사용하므로 PC의 인터넷 설정에서 찾은 프록시 구성을 사용합니다.

따라서 "microsoft.xmlhttp"의 경우 proxycfg 명령은 유용하지 않습니다.

xmlhttp의 대안은 "msxml2.serverxmlhttp"입니다. 이 클래스는 가볍고 서버 친화적으로 설계된 Winhttp HTTP 프로토콜 스택을 사용합니다. Wininet이 아닌 동일한 프로세스에서 여러 스레드에서 여러 인스턴스를 사용하는 것이 안전합니다. 이러한 이유로 ServerXMLHTTP는 서버 측 ASP 코드에 사용해야합니다.

Winhttp는 Wininet이 사용하는 인터넷 설정을 사용하지 않으므로 serverxmlhttp가 사용하는 프록시를 구성하여 proxycfg 명령을 사용해야합니다. 정말 유용한 명령은 다음과 같습니다.-

proxycfg -u

현재 WinInet 프록시 설정을 Winhttp에서 사용하는 것들에 복사합니다. Fiddler와 같은 도구를 사용하면 Fiddler가 시작된 후 Winhttp를 통해 트래픽을 모니터링하는 데 유용합니다. (후속 조치에 유의하십시오 proxycfg -d 프록시 설정을 제거하려면).

Serverxmlhttp도 있습니다 setProxy 실제 프록시 설정을 동적으로 구성 할 수있는 메소드는 코드로 구성됩니다.

다른 팁

Windows Vista 이상의 경우 proxycfg.exe가 더 이상 사용되지 않고 대체되었을 수 있습니다. Netsh Winhttp. 이 기사에서 언급했듯이 : http://msdn.microsoft.com/en-us/library/windows/desktop/aa384069%28v=vss.85%29.aspx

Win7의 상황으로서 대리를 설정하려면 다음을 수행해야합니다.

netsh winhttp set proxy myProxyServer:80

죄송합니다

나는 그것을 찾았다 고 생각한다

http://support.microsoft.com/kb/289481/en-us/

당신은 같은 것을 발행해야합니다


proxycfg -d -p myProxyServer:80 "<local>"

...

편집하다:

또한 XMLHTTP 대신 ServerXMLHTTP를 사용하면 SetProxy 메소드가 있습니다 ...

http://msdn.microsoft.com/en-us/library/ms760236(vs.85).aspx

그리고 여기 사용 예가 있습니다

http://msdn.microsoft.com/en-us/library/ms763680(vs.85).aspx

...

나는이 문제를 해결하기 위해이 스레드를 살펴 보았습니다. 도움이되었지만 지금은 새로운 시스템이 변경되었습니다.
내 상황은 Web MSXML2.serverxmlhttp를 소화 된 Active Directory 자격 증명으로 프록시 서버를 통과하는 회사 서버에서 호출하는 것이 었습니다.

여기에는 몇 가지 문제가 있었지만 결국 .3.0 또는 .6.0 버전을 지정하지 않고 표준 MSXML2.ServerXMLHTTP만으로 작동하게했습니다.

최신 Windows 서버에는 proxycfg가 없으므로 앞에서 언급했듯이 NetSh를 사용해야합니다.

줄을서야 할 몇 가지가 있습니다.
내 시나리오에서 나는 광고 사용자 계정의 자격 증명에 따라 웹 사이트 및 애플리케이션 풀을 실행하고있었습니다 (데이터베이스 액세스에 필요했습니다) 최소한 애플리케이션 풀이 광고 계정으로 실행해야한다고 제안합니다.

이것은 64 비트 Windows 시스템에있었습니다

  1. 분명히 광고 사용자는 인터넷에 액세스해야합니다.
  2. Netsh를 사용하여 Winhttp 프록시 설정을 지정해야합니다.
  3. '32 비트 애플리케이션 활성화'가있는 경우 Winhttp 프록시를 32 비트로 설정해야합니다. 그것은 그 설정을 찾을 것입니다.

그래서 방법?

명령 줄에서 winhttp 프록시 설정을 확인하십시오

%WINDIR%\System32\NETSH WINHTTP SHOW PROXY

명령 줄에서 winhttp 프록시 설정을 확인하십시오

%WINDIR%\SysWOW64\NETSH WINHTTP SHOW PROXY

명령 줄에서 설정 해야하는 경우 [8080을 포트로 변경

%WINDIR%\System32\NETSH WINHTTP SET PROXY PROXYSERVERURL:8080
%WINDIR%\SysWOW64\NETSH WINHTTP SET PROXY PROXYSERVERURL:8080
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top