示例#1
0
        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));
                }
            }
        }
 public Object GetProcessHost(IProcessHostSupportFunctions functions)
 {
     try {
         return(ProcessHost.GetProcessHost(functions));
     }
     catch (Exception e) {
         Misc.ReportUnhandledException(e, new string[] { SR.GetString(SR.Cant_Create_Process_Host) });
         throw;
     }
 }
示例#3
0
 internal static ProcessHost GetProcessHost(IProcessHostSupportFunctions functions)
 {
     if (_theProcessHost == null)
     {
         lock (_processHostStaticLock)
         {
             if (_theProcessHost == null)
             {
                 _theProcessHost = new ProcessHost(functions);
             }
         }
     }
     return(_theProcessHost);
 }
        public object GetProcessHost(IProcessHostSupportFunctions functions)
        {
            object processHost;

            try
            {
                processHost = ProcessHost.GetProcessHost(functions);
            }
            catch (Exception exception)
            {
                Misc.ReportUnhandledException(exception, new string[] { System.Web.SR.GetString("Cant_Create_Process_Host") });
                throw;
            }
            return(processHost);
        }
示例#5
0
        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 }));
            }
        }
        // called from ProcessHostFactoryHelper to get ProcessHost
        internal static ProcessHost GetProcessHost(IProcessHostSupportFunctions functions) {
            if (_theProcessHost == null) {
                lock (_processHostStaticLock) {
                    if (_theProcessHost == null) {
                        _theProcessHost = new ProcessHost(functions);
                    }
                }
            }

            return _theProcessHost;
        }