Exemple #1
0
        internal void DoRuntimeValidation()
        {
            string directoryName = this.DirectoryName;

            if (!BuildManager.IsPrecompiledApp)
            {
                FindFileData data;
                if (!Util.IsValidFileName(directoryName))
                {
                    throw new ConfigurationErrorsException(System.Web.SR.GetString("Invalid_CodeSubDirectory", new object[] { directoryName }), base.ElementInformation.Properties["directoryName"].Source, base.ElementInformation.Properties["directoryName"].LineNumber);
                }
                VirtualPath virtualDir = HttpRuntime.CodeDirectoryVirtualPath.SimpleCombineWithDir(directoryName);
                if (!VirtualPathProvider.DirectoryExistsNoThrow(virtualDir))
                {
                    throw new ConfigurationErrorsException(System.Web.SR.GetString("Invalid_CodeSubDirectory_Not_Exist", new object[] { virtualDir }), base.ElementInformation.Properties["directoryName"].Source, base.ElementInformation.Properties["directoryName"].LineNumber);
                }
                FindFileData.FindFile(virtualDir.MapPathInternal(), out data);
                if (!System.Web.Util.StringUtil.EqualsIgnoreCase(directoryName, data.FileNameLong))
                {
                    throw new ConfigurationErrorsException(System.Web.SR.GetString("Invalid_CodeSubDirectory", new object[] { directoryName }), base.ElementInformation.Properties["directoryName"].Source, base.ElementInformation.Properties["directoryName"].LineNumber);
                }
                if (BuildManager.IsReservedAssemblyName(directoryName))
                {
                    throw new ConfigurationErrorsException(System.Web.SR.GetString("Reserved_AssemblyName", new object[] { directoryName }), base.ElementInformation.Properties["directoryName"].Source, base.ElementInformation.Properties["directoryName"].LineNumber);
                }
            }
        }
        // Validate the element for runtime use
        internal void DoRuntimeValidation()
        {
            string directoryName = DirectoryName;

            // If the app is precompiled, don't attempt further validation, sine the directory
            // will not actually exist (VSWhidbey 394333)
            if (BuildManager.IsPrecompiledApp)
            {
                return;
            }

            // Make sure it's just a valid simple directory name
            if (!Util.IsValidFileName(directoryName))
            {
                throw new ConfigurationErrorsException(
                          SR.GetString(SR.Invalid_CodeSubDirectory, directoryName),
                          ElementInformation.Properties[dirNameAttribName].Source, ElementInformation.Properties[dirNameAttribName].LineNumber);
            }

            VirtualPath codeVirtualSubDir = HttpRuntime.CodeDirectoryVirtualPath.SimpleCombineWithDir(directoryName);

            // Make sure the specified directory exists
            if (!VirtualPathProvider.DirectoryExistsNoThrow(codeVirtualSubDir))
            {
                throw new ConfigurationErrorsException(
                          SR.GetString(SR.Invalid_CodeSubDirectory_Not_Exist, codeVirtualSubDir),
                          ElementInformation.Properties[dirNameAttribName].Source, ElementInformation.Properties[dirNameAttribName].LineNumber);
            }

            // Look at the actual physical dir to get its name canonicalized (VSWhidbey 288568)
            string       physicalDir = codeVirtualSubDir.MapPathInternal();
            FindFileData ffd;

            FindFileData.FindFile(physicalDir, out ffd);

            // If the name was not canonical, reject it
            if (!StringUtil.EqualsIgnoreCase(directoryName, ffd.FileNameLong))
            {
                throw new ConfigurationErrorsException(
                          SR.GetString(SR.Invalid_CodeSubDirectory, directoryName),
                          ElementInformation.Properties[dirNameAttribName].Source, ElementInformation.Properties[dirNameAttribName].LineNumber);
            }

            if (BuildManager.IsReservedAssemblyName(directoryName))
            {
                throw new ConfigurationErrorsException(
                          SR.GetString(SR.Reserved_AssemblyName, directoryName),
                          ElementInformation.Properties[dirNameAttribName].Source, ElementInformation.Properties[dirNameAttribName].LineNumber);
            }
        }