internal ISAPIApplicationHost(string appIdOrVirtualPath, string physicalPath, bool validatePhysicalPath, IProcessHostSupportFunctions functions, string iisVersion = null) { _iisVersion = iisVersion; // appIdOrVirtualPath is either a full metabase path, or just a virtual path // e.g. /LM/W3SVC/1/Root/MyApp ot /MyApp // Figure out which one we have, and get the other one from it _functions = functions; // make sure the functions are set in the default domain if (null == _functions) { ProcessHost h = ProcessHost.DefaultHost; if (null != h) { _functions = h.SupportFunctions; if (null != _functions) { HostingEnvironment.SupportFunctions = _functions; } } } IServerConfig serverConfig = ServerConfig.GetDefaultDomainInstance(_iisVersion); if (StringUtil.StringStartsWithIgnoreCase(appIdOrVirtualPath, LMW3SVC_PREFIX)) { _appId = appIdOrVirtualPath; _virtualPath = VirtualPath.Create(ExtractVPathFromAppId(_appId)); _siteID = ExtractSiteIdFromAppId(_appId); _siteName = serverConfig.GetSiteNameFromSiteID(_siteID); } else { _virtualPath = VirtualPath.Create(appIdOrVirtualPath); _appId = GetDefaultAppIdFromVPath(_virtualPath.VirtualPathString); _siteID = DEFAULT_SITEID; _siteName = serverConfig.GetSiteNameFromSiteID(_siteID); } // Get the physical path from the virtual path if it wasn't passed in if (physicalPath == null) { _physicalPath = serverConfig.MapPath(this, _virtualPath); } else { _physicalPath = physicalPath; } if (validatePhysicalPath) { if (!Directory.Exists(_physicalPath)) { throw new HttpException(SR.GetString(SR.Invalid_IIS_app, appIdOrVirtualPath)); } } }
internal ISAPIApplicationHost(string appIdOrVirtualPath, string physicalPath, bool validatePhysicalPath, IProcessHostSupportFunctions functions, string iisVersion = null) { this._iisVersion = iisVersion; this._functions = functions; if (this._functions == null) { ProcessHost defaultHost = ProcessHost.DefaultHost; if (defaultHost != null) { this._functions = defaultHost.SupportFunctions; if (this._functions != null) { HostingEnvironment.SupportFunctions = this._functions; } } } IServerConfig defaultDomainInstance = ServerConfig.GetDefaultDomainInstance(this._iisVersion); if (StringUtil.StringStartsWithIgnoreCase(appIdOrVirtualPath, "/LM/W3SVC/")) { this._appId = appIdOrVirtualPath; this._virtualPath = VirtualPath.Create(ExtractVPathFromAppId(this._appId)); this._siteID = ExtractSiteIdFromAppId(this._appId); this._siteName = defaultDomainInstance.GetSiteNameFromSiteID(this._siteID); } else { this._virtualPath = VirtualPath.Create(appIdOrVirtualPath); this._appId = GetDefaultAppIdFromVPath(this._virtualPath.VirtualPathString); this._siteID = "1"; this._siteName = defaultDomainInstance.GetSiteNameFromSiteID(this._siteID); } if (physicalPath == null) { this._physicalPath = defaultDomainInstance.MapPath(this, this._virtualPath); } else { this._physicalPath = physicalPath; } if (validatePhysicalPath && !Directory.Exists(this._physicalPath)) { throw new HttpException(System.Web.SR.GetString("Invalid_IIS_app", new object[] { appIdOrVirtualPath })); } }