public CustomErrorsRedirectType ParseCustomErrorsRedirectType(CustomErrorCollection customErrorCollection)
        {
            var customError = customErrorCollection[_statusCode.ToString()];

            if (customError == null)
            {
                return EnumHelpers.GetDefaultEnumValue<CustomErrorsRedirectType>();
            }

            var htmPage = string.Format(StaticPageFormatString, _statusCode);
            var mvcPage = string.Format(MvcPageFormatString, _statusCode);
            var aspxPage = string.Format(AspxPageFormatString, _statusCode);

            if (string.Equals(customError.Redirect, htmPage, StringComparison.OrdinalIgnoreCase))
            {
                return CustomErrorsRedirectType.StaticErrorPage;
            }

            if (string.Equals(customError.Redirect, mvcPage, StringComparison.OrdinalIgnoreCase))
            {
                return CustomErrorsRedirectType.MvcErrorPage;
            }

            if (string.Equals(customError.Redirect, aspxPage, StringComparison.OrdinalIgnoreCase))
            {
                return CustomErrorsRedirectType.AspxErrorPage;
            }

            throw new Exception(
                string.Format("Failed to match redirect {0} for status code {1}.", customError.Redirect, _statusCode));
        }
예제 #2
0
		public void GetKey ()
		{
			CustomErrorCollection col = new CustomErrorCollection ();

			col.Add (new CustomError (404, "http://404-error.com/"));

			Assert.AreEqual ("404", col.GetKey (0), "A1");
		}
예제 #3
0
		public void Set ()
		{
			CustomErrorCollection col = new CustomErrorCollection ();

			col.Add (new CustomError (404, "http://404-error.com/"));
			col.Add (new CustomError (403, "http://403-error.com/"));
			col.Add (new CustomError (999, "http://403-error.com/"));

			col.Set (new CustomError (403, "http://403-error2.com/"));

			Assert.AreEqual (3, col.Count, "A1");
			Assert.AreEqual (3, col.AllKeys.Length, "A2");

			Assert.AreEqual ("http://403-error2.com/", col[1].Redirect, "A3");
		}
예제 #4
0
		public void SetToDuplicate ()
		{
			CustomErrorCollection col = new CustomErrorCollection ();

			col.Add (new CustomError (404, "http://404-error.com/"));
			col.Add (new CustomError (403, "http://403-error.com/"));
			col.Add (new CustomError (999, "http://403-error.com/"));

			/* override the 999 entry with a duplicate 403 */
			col[2] = new CustomError (403, "http://403-error2.com/");

			Assert.AreEqual (3, col.Count, "A1");
			Assert.AreEqual (3, col.AllKeys.Length, "A2");

			Assert.AreEqual (403, col[1].StatusCode, "A3");
			Assert.AreEqual ("http://403-error.com/", col[1].Redirect, "A4");
			Assert.AreEqual (403, col[2].StatusCode, "A5");
			Assert.AreEqual ("http://403-error2.com/", col[2].Redirect, "A6");
		}
예제 #5
0
        public static void Main()
        {
            // <Snippet1>

            // Get the Web application configuration.
            System.Configuration.Configuration configuration =
                WebConfigurationManager.OpenWebConfiguration(
                    "/aspnetTest");

            // Get the section.
            CustomErrorsSection customErrorsSection =
                (CustomErrorsSection)configuration.GetSection(
                    "system.web/customErrors");

            // Get the collection
            CustomErrorCollection customErrorsCollection =
                customErrorsSection.Errors;

            // </Snippet1>


            // <Snippet2>
            // Create a new CustomErrorCollection object.
            CustomErrorCollection newcustomErrorCollection =
                new System.Web.Configuration.CustomErrorCollection();

            // </Snippet2>


            // <Snippet3>
            // Get the currentDefaultRedirect
            string currentDefaultRedirect =
                customErrorsSection.DefaultRedirect;

            // </Snippet3>

            // <Snippet4>
            // Using the Set method.
            CustomError newCustomError =
                new CustomError(404, "customerror404.htm");

            // Update the configuration file.
            if (!customErrorsSection.SectionInformation.IsLocked)
            {
                // Add the new custom error to the collection.
                customErrorsCollection.Set(newCustomError);
                configuration.Save();
            }

            // </Snippet4>

            // <Snippet5>
            // Using the Add method.
            CustomError newCustomError2 =
                new CustomError(404, "customerror404.htm");

            // Update the configuration file.
            if (!customErrorsSection.SectionInformation.IsLocked)
            {
                // Add the new custom error to the collection.
                customErrorsCollection.Add(newCustomError2);
                configuration.Save();
            }

            // </Snippet5>


            // <Snippet6>
            // Using the Clear method.
            if (!customErrorsSection.SectionInformation.IsLocked)
            {
                // Execute the Clear method.
                customErrorsCollection.Clear();
                configuration.Save();
            }

            // </Snippet6>

            // <Snippet7>
            // Using the Remove method.
            if (!customErrorsSection.SectionInformation.IsLocked)
            {
                // Remove the error with statuscode 404.
                customErrorsCollection.Remove("404");
                configuration.Save();
            }

            // </Snippet7>


            // <Snippet8>
            // Using method RemoveAt.
            if (!customErrorsSection.SectionInformation.IsLocked)
            {
                // Remove the error at 0 index
                customErrorsCollection.RemoveAt(0);
                configuration.Save();
            }

            // </Snippet8>


            // <Snippet9>
            // Get the current Mode.
            CustomErrorsMode currentMode =
                customErrorsSection.Mode;

            // Set the current Mode.
            customErrorsSection.Mode =
                CustomErrorsMode.RemoteOnly;

            // </Snippet9>

            // <Snippet10>
            // Get the error with collection index 0.
            CustomError customError =
                customErrorsCollection[0];

            // </Snippet10>

            // <Snippet11>
            // Get the error with status code 404.
            CustomError customError1 =
                customErrorsCollection["404"];

            // </Snippet11>

            // <Snippet12>
            // Create a new CustomErrorsSection object.
            CustomErrorsSection newcustomErrorsSection =
                new CustomErrorsSection();

            // </Snippet12>
        }
예제 #6
0
		public void GetKey_OutOfRange ()
		{
			CustomErrorCollection col = new CustomErrorCollection ();
			Assert.IsNull (col.GetKey(0), "A1");
		}
예제 #7
0
		public void AllKeys ()
		{
			CustomErrorCollection col = new CustomErrorCollection ();

			col.Add (new CustomError (404, "http://404-error.com/"));
			col.Add (new CustomError (403, "http://403-error.com/"));
			col.Add (new CustomError (999, "http://403-error.com/"));

			Assert.AreEqual (3, col.AllKeys.Length, "A1");
			Assert.AreEqual ("404", col.AllKeys[0], "A2");
			Assert.AreEqual ("403", col.AllKeys[1], "A3");
			Assert.AreEqual ("999", col.AllKeys[2], "A4");
		}
예제 #8
0
		public void DuplicateKeyInAdd ()
		{
			CustomErrorCollection col = new CustomErrorCollection ();

			col.Add (new CustomError (404, "http://404-error.com/"));
			col.Add (new CustomError (404, "http://403-error.com/"));

			Assert.AreEqual (1, col.Count, "A1");
			Assert.AreEqual (1, col.AllKeys.Length, "A2");

			Assert.AreEqual ("http://403-error.com/", col[0].Redirect, "A3");
		}