示例#1
0
        private static int Main(string[] args)
        {
            AppTools.Init("Development Utility", true, new GlobalLogic());
            try {
                return(AppTools.ExecuteAppWithStandardExceptionHandling(
                           () => {
                    try {
                        if (args.Count() < 2)
                        {
                            throw new UserCorrectableException("You must specify the installation path as the first argument and the operation name as the second.");
                        }

                        // Get installation.
                        var installationPath = args[0];
                        DevelopmentInstallation installation;
                        try {
                            installation = getInstallation(installationPath);
                        }
                        catch (Exception e) {
                            throw new UserCorrectableException("The installation at \"" + installationPath + "\" is invalid.", e);
                        }

                        // Get operation.
                        var operations = AssemblyTools.BuildSingletonDictionary <Operation, string>(Assembly.GetExecutingAssembly(), i => i.GetType().Name);
                        var operationName = args[1];
                        if (!operations.ContainsKey(operationName))
                        {
                            throw new UserCorrectableException(operationName + " is not a known operation.");
                        }
                        var operation = operations[operationName];

                        if (!operation.IsValid(installation))
                        {
                            throw new UserCorrectableException("The " + operation.GetType().Name + " operation cannot be performed on this installation.");
                        }
                        operation.Execute(installation, new OperationResult());
                    }
                    catch (Exception e) {
                        Output.WriteTimeStampedError(e.ToString());
                        if (e is UserCorrectableException)
                        {
                            throw new DoNotEmailOrLogException();
                        }
                        throw;
                    }
                }));
            }
            finally {
                AppTools.CleanUp();
            }
        }
        public static void Main()
        {
            AppTools.Init("Tester", false, new GlobalLogic());

            StandardLibraryMethods.RunStandardLibraryTests();

            Console.WriteLine(new TimeSpan(0, 0, 0, 0, 4861000).ToHourMinuteSecondString());
            Console.WriteLine(new TimeSpan(0, 0, 0, 0, 4861000).ToHourMinuteString());
            Console.WriteLine(new TimeSpan(0, 0, 0, 0, 104861000).ToHourMinuteSecondString());
            Console.WriteLine(new TimeSpan(0, 0, 0, 0, 104861000).ToHourMinuteString());
            Console.WriteLine(new TimeSpan(1, 2, 3, 4, 0).ToHourMinuteSecondString());
            Console.WriteLine(new TimeSpan(1, 2, 3, 4, 0).ToHourMinuteString());
            Console.WriteLine(new TimeSpan(0, 1, 32).ToHourMinuteSecondString());

            Console.WriteLine(FormattingMethods.GetFormattedBytes(64));
            Console.WriteLine(FormattingMethods.GetFormattedBytes(64000));
            Console.WriteLine(FormattingMethods.GetFormattedBytes(64000000));
            Console.WriteLine(FormattingMethods.GetFormattedBytes(64500000000));

            Console.WriteLine("fred".CapitalizeString());
            Console.WriteLine("".CapitalizeString());
            Console.WriteLine("\n".CapitalizeString());
            Console.WriteLine("f".CapitalizeString());
            Console.WriteLine("1234f".CapitalizeString());
            Console.WriteLine("1234".CapitalizeString());
            Console.WriteLine("       f".CapitalizeString());
            Console.WriteLine("       ".CapitalizeString());
            Console.WriteLine(" fred".CapitalizeString());
            Console.WriteLine(" fred died.".CapitalizeString());
            Console.WriteLine(".".CapitalizeString());
            Console.WriteLine(" .".CapitalizeString());
            Console.WriteLine(" .fred died.".CapitalizeString());
            Console.WriteLine(" . fred died.".CapitalizeString());
            Console.WriteLine("\nfred".CapitalizeString());
            Console.WriteLine(" \n fred".CapitalizeString());
            Console.WriteLine("\n------\nfred".CapitalizeString());

            Console.WriteLine("one two three.csv".ToSafeFileName());

            Console.WriteLine("One {one one } two {two}".RemoveTextBetweenStrings("{", "}"));
            Console.WriteLine("This 'quoted text'.".RemoveTextBetweenStrings("'", "'"));
            Console.WriteLine("A comments looks like /*A comment.*/.".RemoveTextBetweenStrings("/*", "*/"));
            Console.WriteLine("body.ewf div.ewfIeWarningBanner table a { font-size:1.5em; }".RemoveTextBetweenStrings("{", "}"));

            Console.WriteLine("one".ConcatenateWithSpace("two"));
            Console.WriteLine(StringTools.ConcatenateWithDelimiter(", ", "one", "two", "three"));
            Console.WriteLine(StringTools.ConcatenateWithDelimiter("|", "", "one", "", "", "two", "", "three ", "   "));

            Console.WriteLine("abcde".Truncate(4));
            Console.WriteLine("abcde".TruncateStart(4));
            Console.WriteLine(NetTools.CombineUrls(@"http://www.redstapler.biz", "/Files", "Carriers", "Hancock/", "blabla.pdf"));
            Console.WriteLine(NetTools.CombineUrls(@"http://www.redstapler.biz", "//Files", "Carriers", "Hancock//", "blabla.pdf//"));
            Console.WriteLine(NetTools.CombineUrls(@"///http://www.redstapler.biz//", "/Files/", "Carriers/", "Hancock/", "/blabla.pdf/"));
            Console.WriteLine(NetTools.CombineUrls(@"http://localhost/ToddPublicWebSite/", "Carriers", "UP", "ComparisonLogo.jpg"));

            Console.WriteLine(StandardLibraryMethods.CombinePaths(@"C:\Inetpub\", "Files", "orgs", "box.txt"));
            Console.WriteLine(StandardLibraryMethods.CombinePaths(@"C:\Inetpub\", "Files", "orgs", "anotherFolder", "box.txt"));
            Console.WriteLine(StandardLibraryMethods.CombinePaths(@"C:\Inetpub\", "Files", @"orgs\"));
            Console.WriteLine(StandardLibraryMethods.CombinePaths(@"C:\Inetpub", @"\Files\", @"\orgs", "box.txt"));
            Console.WriteLine(StandardLibraryMethods.CombinePaths(@"Inetpub", @"Files"));
            Console.WriteLine(StandardLibraryMethods.CombinePaths(@"D:\Source Control Repository\Charette", @"", @"\Aspose.Words.lic"));

            Console.WriteLine(StringTools.CamelToEnglish(null));
            Console.WriteLine("".CamelToEnglish());
            Console.WriteLine("L".CamelToEnglish());
            Console.WriteLine("l".CamelToEnglish());
            Console.WriteLine("LeftLeg".CamelToEnglish());
            Console.WriteLine("hits you in the Head and the LeftLeg!  That hurts.".CamelToEnglish());

            var mySet = new HashSet <string> {
                "a", "c", "", "b", "fred"
            };

            var list = new List <string>(mySet);

            foreach (var item in mySet)
            {
                list.Add(item);
            }

            //	mySet = new Set( list );

            var ls = new ListSet <string> {
                "one", "two", "one", "two"
            };

            foreach (var item in ls)
            {
                Console.WriteLine(item);
            }

            var validator = new Validator();
            var vp        = new ValidationErrorHandler(errorWriter);

            Console.WriteLine(validator.GetUrl(vp, "hTTp://RedStapler.biZ/fRed", false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine(validator.GetUrl(vp, "fred", true));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.Write(validator.GetNullableSqlSmallDateTimeExact(vp, "fred", "MM/dd/yyy", false));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine(validator.GetInt(vp, "fred"));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);               // "myGoodInt" );
            Console.WriteLine(validator.GetInt(vp, "-342"));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);               // "myBadDate" );
            Console.WriteLine(validator.GetSqlSmallDateTimeFromParts(vp, "3", "", ""));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);               // "myBadDate" );
            Console.WriteLine(validator.GetSqlSmallDateTimeFromParts(vp, "", "", ""));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);               // "zip" );
            Console.WriteLine(validator.GetZipCode(vp, "14580", true).FullZipCode);
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);               // "zip" );
            Console.WriteLine(validator.GetZipCode(vp, "14580-1234", true).FullZipCode);
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);               // "badZip" );
            Console.WriteLine(validator.GetZipCode(vp, "123", false).FullZipCode);
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            Console.WriteLine("---------------------------------\nPhone Numbers:\n------------------------------------\n");
            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine(validator.GetPhoneNumber(vp, "5854556476", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);


            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine(validator.GetPhoneNumber(vp, "585 4556476", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine(validator.GetPhoneNumber(vp, "( 585 )455-6476", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine(validator.GetPhoneNumber(vp, "(585)455-6476", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine(validator.GetPhoneNumber(vp, "585-455-6476", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("With lots of spaces: " + validator.GetPhoneNumber(vp, "585   872   0291  ", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("With x: " + validator.GetPhoneNumber(vp, "5854556476   x   12345", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("With space ext. allowed: " + validator.GetPhoneNumber(vp, "5854556476 12345", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("Toni example 1: " + validator.GetPhoneNumber(vp, "321-663-4810", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("Toni example 2: " + validator.GetPhoneNumber(vp, "585-336-7600 ext 65361", true, true, false));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("Gibberish, should fail^ " + validator.GetPhoneNumber(vp, "sodifuoisafdoiu", true, true, true));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("With space no ext. allowed, should fail^ " + validator.GetPhoneNumber(vp, "5854556476 12345", false, false, true));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("With extension and no delimeters, should fail^ " + validator.GetPhoneNumber(vp, "585455647612345", true, true, false));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("With extension and no delimeters, should succeed since allowGarbage is on. " +
                              validator.GetPhoneNumber(vp, "585455647612345", true, true, true));
            Assert.IsFalse(vp.LastResult != ErrorCondition.NoError);

            vp = new ValidationErrorHandler(errorWriter);
            Console.WriteLine("Should fail^ " + validator.GetPhoneNumber(vp, "02934", true, true, false));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            Console.WriteLine("------------------------\nEnd phone numbers.\n-------------------------------\n");

            vp = new ValidationErrorHandler(errorWriter);               // "badByte" );
            Console.WriteLine(validator.GetByte(vp, "234987234"));
            Assert.IsFalse(vp.LastResult == ErrorCondition.NoError);

            var key = Rijndael.Create().Key;

            Console.Write("Encryption Key: { ");
            foreach (var b in key)
            {
                Console.Write(b + ", ");
            }
            Console.WriteLine();

            Console.WriteLine("SSN length: " + EncryptionOps.EncryptString(EncryptionOps.GenerateInitVector(), "987654321").Length);
        }
示例#3
0
        /// <summary>
        /// Call this from Application_Start in your Global.asax.cs file. Besides this call, there should be no other code in the method.
        /// </summary>
        // We could save people the effort of calling this by using trick #1 in
        // http://www.paraesthesia.com/archive/2011/02/08/dynamic-httpmodule-registration-in-asp-net-4-0.aspx, but that would probably require making this a static
        // method and would probably also cause this method to run at start up time in *all* web applications that reference the Standard Library, even the ones
        // that don't want to use EWF.
        protected void ewfApplicationStart(SystemLogic systemLogic)
        {
            // This is a hack to support data-access state in WCF services.
            var wcfDataAccessState = new ThreadLocal <DataAccessState>(() => new DataAccessState());

            // Initialize system.
            var initTimeDataAccessState = new ThreadLocal <DataAccessState>(() => new DataAccessState());

            try {
                AppTools.Init(
                    Path.GetFileName(Path.GetDirectoryName(HttpRuntime.AppDomainAppPath)),
                    false,
                    systemLogic,
                    mainDataAccessStateGetter: () => {
                    // We must use the Instance property here to prevent this logic from always returning the request state of the *first* EwfApp instance.
                    return(Instance != null
                                                               ? Instance.RequestState != null ? Instance.RequestState.DataAccessState : initTimeDataAccessState.Value
                                                               : System.ServiceModel.OperationContext.Current != null ? wcfDataAccessState.Value : null);
                });
            }
            catch {
                // Suppress all exceptions since there is no way to report them.
                return;
            }
            ewlInitialized = true;

            // Initialize web application.
            if (!AppTools.SecondaryInitFailed)
            {
                executeWithBasicExceptionHandling(
                    () => {
                    EwfConfigurationStatics.Init();

                    // Prevent MiniProfiler JSON exceptions caused by pages with hundreds of database queries.
                    MiniProfiler.Settings.MaxJsonResponseSize = int.MaxValue;

                    GlobalType       = GetType().BaseType;
                    MetaLogicFactory =
                        GlobalType.Assembly.CreateInstance("RedStapler.StandardLibrary.EnterpriseWebFramework." + GlobalType.Namespace + ".MetaLogicFactory") as
                        AppMetaLogicFactory;
                    if (MetaLogicFactory == null)
                    {
                        throw new ApplicationException("Meta logic factory not found.");
                    }

                    // This initialization could be performed using reflection. There is no need for EwfApp to have a dependency on these classes.
                    if (systemLogic != null)
                    {
                        CssPreprocessingStatics.Init(systemLogic.GetType().Assembly, GlobalType.Assembly);
                    }
                    else
                    {
                        CssPreprocessingStatics.Init(GlobalType.Assembly);
                    }
                    EwfUiStatics.Init(GlobalType);

                    initializeWebApp();

                    initTimeDataAccessState = null;
                    initialized             = true;
                },
                    false,
                    false);
            }

            // If initialization failed, unload and restart the application after a reasonable delay.
            if (!initialized)
            {
                const int unloadDelay = 60000;                 // milliseconds
                initFailureUnloadTimer = new Timer(
                    state => executeWithBasicExceptionHandling(
                        () => {
                    if (AppTools.IsDevelopmentInstallation)
                    {
                        return;
                    }
                    HttpRuntime.UnloadAppDomain();

                    // Restart the application by making a request. Idea from Rick Strahl:
                    // http://weblog.west-wind.com/posts/2013/Oct/02/Use-IIS-Application-Initialization-for-keeping-ASPNET-Apps-alive.
                    //
                    // Disable server certificate validation so that this request gets through even for web sites that don't use a certificate that is trusted by
                    // default. There is no security risk since we're not sending any sensitive information and we're not using the response.
                    NetTools.ExecuteWithResponse(IisConfigurationStatics.GetFirstBaseUrlForCurrentSite(false), response => { }, disableCertificateValidation: true);
                },
                        false,
                        false),
                    null,
                    unloadDelay,
                    Timeout.Infinite);
            }
        }
        /// <summary>
        /// Call this from Application_Start in your Global.asax.cs file. Besides this call, there should be no other code in the method.
        /// </summary>
        /// <param name="globalInitializer">The system's global initializer. Do not pass null.</param>
        /// <param name="appInitializer">The application initializer, which performs web-site specific initialization and cleanup. If you have one of these you
        /// should name the class AppInitializer.</param>
        public static void InitStatics(SystemInitializer globalInitializer, SystemInitializer appInitializer = null)
        {
            // This is a hack to support data-access state in WCF services.
            var wcfDataAccessState = new ThreadLocal <DataAccessState>(() => new DataAccessState());

            // Initialize system.
            var initTimeDataAccessState = new ThreadLocal <DataAccessState>(() => new DataAccessState());

            try {
                AppTools.Init(
                    globalInitializer,
                    Path.GetFileName(Path.GetDirectoryName(HttpRuntime.AppDomainAppPath)),
                    false,
                    mainDataAccessStateGetter:
                    () => {
                    return(EwfApp.Instance != null
                                                                       ? EwfApp.Instance.RequestState != null ? EwfApp.Instance.RequestState.DataAccessState : initTimeDataAccessState.Value
                                                                       : System.ServiceModel.OperationContext.Current != null ? wcfDataAccessState.Value : null);
                });
            }
            catch {
                // Suppress all exceptions since there is no way to report them.
                return;
            }
            ewlInitialized = true;

            // Initialize web application.
            if (!AppTools.SecondaryInitFailed)
            {
                EwfApp.ExecuteWithBasicExceptionHandling(
                    () => {
                    EwfConfigurationStatics.Init();

                    // Prevent MiniProfiler JSON exceptions caused by pages with hundreds of database queries.
                    MiniProfiler.Settings.MaxJsonResponseSize = int.MaxValue;

                    var globalType       = BuildManager.GetGlobalAsaxType().BaseType;
                    var metaLogicFactory =
                        globalType.Assembly.CreateInstance("RedStapler.StandardLibrary.EnterpriseWebFramework." + globalType.Namespace + ".MetaLogicFactory") as
                        AppMetaLogicFactory;
                    if (metaLogicFactory == null)
                    {
                        throw new ApplicationException("Meta logic factory not found.");
                    }
                    EwfApp.Init(globalType, metaLogicFactory);

                    EwfPage.Init(
                        () => {
                        var cssInfos = new List <ResourceInfo>();
                        cssInfos.AddRange(EwfApp.MetaLogicFactory.CreateBasicCssInfos());
                        if (EwfUiStatics.AppMasterPage != null)
                        {
                            cssInfos.AddRange(EwfApp.MetaLogicFactory.CreateEwfUiCssInfos());
                        }
                        cssInfos.AddRange(EwfApp.Instance.GetStyleSheets());
                        if (EwfUiStatics.AppMasterPage != null)
                        {
                            cssInfos.AddRange(EwfUiStatics.AppProvider.GetStyleSheets());
                        }
                        return(cssInfos);
                    });
                    CssPreprocessingStatics.Init(globalInitializer.GetType().Assembly, globalType.Assembly);
                    EwfUiStatics.Init(globalType);

                    EwfInitializationOps.appInitializer = appInitializer;
                    if (appInitializer != null)
                    {
                        appInitializer.InitStatics();
                    }

                    initTimeDataAccessState     = null;
                    EwfApp.FrameworkInitialized = true;
                },
                    false,
                    false);
            }

            // If initialization failed, unload and restart the application after a reasonable delay.
            if (!EwfApp.FrameworkInitialized)
            {
                const int unloadDelay = 60000;                 // milliseconds
                initFailureUnloadTimer = new Timer(
                    state => EwfApp.ExecuteWithBasicExceptionHandling(
                        () => {
                    if (AppTools.IsDevelopmentInstallation)
                    {
                        return;
                    }
                    HttpRuntime.UnloadAppDomain();

                    // Restart the application by making a request. Idea from Rick Strahl:
                    // http://weblog.west-wind.com/posts/2013/Oct/02/Use-IIS-Application-Initialization-for-keeping-ASPNET-Apps-alive.
                    //
                    // Disable server certificate validation so that this request gets through even for web sites that don't use a certificate that is trusted by
                    // default. There is no security risk since we're not sending any sensitive information and we're not using the response.
                    NetTools.ExecuteWithResponse(IisConfigurationStatics.GetFirstBaseUrlForCurrentSite(false), response => { }, disableCertificateValidation: true);
                },
                        false,
                        false),
                    null,
                    unloadDelay,
                    Timeout.Infinite);
            }
        }