Определить протокол для сайта - PullRequest
1 голос
/ 31 августа 2010

Я использую IIS 6. Мне нужно определить, работает ли определенный сайт с http или https.

Я попытался извлечь все свойства с помощью 'DirectoryEntry' из: IIS: // localhost / W3SVC / 1 (1 - это идентификатор сайта в этом примере)

Ниже приведены результаты. Если кто-нибудь знает какой-либо другой способ определения типа протокола IIS6 программным способом, используя «DirectoryEntry» - пожалуйста, сообщите мне

 AccessFlags = 513 
 AppIsolated = 2
 KeyType = IIsWebVirtualDir
 Path = c:\inetpub\wwwroot
 AppRoot = /LM/W3SVC/1/ROOT 
 AppFriendlyName = Default Application 
 DefaultDoc = Default.htm,Default.asp,index.htm,iisstart.asp
 AnonymousPasswordSync = True
 DirBrowseFlags = 1073741886 
 CacheISAPI = True 
 CGITimeout = 300 
 AuthFlags = 1 
 ContentIndexed = True
 AspLogErrorRequests = True
 AspScriptFileCacheSize = 250
 AspScriptEngineCacheMax = 125
 AspExceptionCatchEnable = True
 AspTrackThreadingModel = False
 AspAllowOutOfProcComponents = True
 AspEnableAspHtmlFallback = False
 AspEnableChunkedEncoding = True
 AspEnableTypelibCache = True
 AspErrorsToNTLog = False
 AspProcessorThreadMax = 25
 AspRequestQueueMax = 3000
 AspMaxDiskTemplateCacheFiles = 1000
 AspAllowSessionState = True
 AspBufferingOn = True
 AspEnableParentPaths = True
 AspSessionTimeout = 20
 AspQueueTimeout = -1 
 AspCodepage = 0 
 AspScriptTimeout = 90 
 AspScriptErrorSentToBrowser = True 
 AppAllowDebugging = False
 AppAllowClientDebug = False
 AspKeepSessionIDSecure = False
 AspEnableApplicationRestart = True
 AspQueueConnectionTestTime = 3
 AspSessionMax = -1 AspLCID = 2048
 AnonymousUserName = IUSR_MASTER
 AspScriptLanguage = VBScript
 AspScriptErrorMessage = An error occurred on the server when processing the URL.  Please  contact the system administrator. 
 AnonymousUserPass = wl60A8PT[Cp@hE
 AspDiskTemplateCacheDirectory = %windir%\system32\inetsrv\ASP Compiled Templates  
 HttpCustomHeaders = X-Powered-By: ASP.NET 
 KeyType = IIsCertMapper

Может ли кто-нибудь из них сказать мне, если протокол Http или Https? Если нет ... кто-нибудь знает, как проверить это с помощью C # на IIS 6?

Ответы [ 6 ]

2 голосов
/ 08 сентября 2010

Конечно: IIS AccessSSLFlags свойство содержит эти данные.

Если установлен флаг AccessSSL (hex 0x00000008), это означает, что требуется SSL -ie https-, если не доступен http.

Как обычно, вы должны проверить это свойство в корневом каталоге IIS WebServer, поскольку логика IIS основана на виртуальных каталогах.

Путь -> IIS: // localhost / W3SVC / 1 / Root

1 голос
/ 08 сентября 2010

Похоже, вам нужно использовать свойство SecureBindings объекта IIsWebServer.

Я протестировал следующий фрагмент кода на своем собственном Windows Server 2003 с сайтами SSL и без SSL.

DirectoryEntry di = new DirectoryEntry("IIS://prodweb1/W3SVC/1");
PropertyValueCollection sslCertHashProperty = di.Properties["SSLCertHash"];
if (sslCertHashProperty.Count > 0)
{
  Console.WriteLine("Site has associated SSL Certificate.");
}
PropertyValueCollection secureBindingsProperty = di.Properties["SecureBindings"];
if (secureBindingsProperty.Count > 0)
{
  Console.WriteLine("Site has at least one SSL (https) binding.");
}
PropertyValueCollection serverBindingsProperty = di.Properties["ServerBindings"];
if (serverBindingsProperty.Count > 0)
{
  Console.WriteLine("Site has at least one non-SSL (http) binding.");
}
0 голосов
/ 10 сентября 2010

Вы можете проверить объект запроса.Если используется SSL:

HttpContext.Current.Request.ServerVariables["HTTPS"].ToLower() == "on"
0 голосов
/ 07 сентября 2010

Вы можете использовать метабазу, чтобы сказать. Я не знаю, почему это не в вашем выводе, но должно быть свойство lik IsSecure = true, чтобы указать, что ssl требуется. Я не думаю, что это свойство установлено, если ssl является необязательным.

0 голосов
/ 07 сентября 2010

не то, что разбирается в C #, но я считаю, что вы можете загрузить информацию web.config в ваше приложение.Там вы сможете увидеть, есть ли определенный ключ безопасности, указывающий, что SSL настроен на сервере.

Configuration.AppSettings(<key>)
0 голосов
/ 31 августа 2010

Если вы можете подождать, пока не получите запрос, вы можете использовать Request.IsSecureConnection.

...