Read <customErrors> element via VB.NET Code?

G

Guest

Hi. Is it programatically possible in VB.NET to read the contents of
web.config's <customErrors> element? I looked at using
ConfigurationSettings.AppSettings, but that doesn't work.

I need to read the value of redirect from the error statusCode 404. My
web.config looks like this:
<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx">
<error statusCode="404" redirect="Error404.aspx" />
</customErrors>

Thanks!
 
G

Guest

Hi Mike,

using System.Web.Configuration;

// pass application virtual directory name
Configuration configuration =
WebConfigurationManager.OpenWebConfiguration("/TestWebsite");
CustomErrorsSection section =
(CustomErrorsSection)configuration.GetSection("system.web/customErrors");

foreach (CustomError error in section.Errors)
{
Response.Write(error.StatusCode);
}
 
J

Juan T. Llibre

re:
Hi. Is it programatically possible in VB.NET to read the contents of web.config's <customErrors> element?

Sure it's possible.

See it working at : http://asp.net.do/test/readCustomErrors.aspx

Here's the source for that sample I wrote :

readCustomErrors.aspx:
-----------------------------------

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Configuration" %>

<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

' Set the root path of the Web application that contains the Web.config file that you want to access.

Dim configuration As System.Configuration.Configuration = WebConfigurationManager.OpenWebConfiguration("/test")

' Get the section.

Dim customErrorsSection As CustomErrorsSection = CType(configuration.GetSection("system.web/customErrors"), CustomErrorsSection)

' Read the <customErrors> section mode.

Dim currentMode As CustomErrorsMode = customErrorsSection.Mode

' Display the <customErrors> information.

ConfigId.Text = currentMode.ToString()

End Sub
</script>

<html >
<head>
<title>Read customErrors Configuration Setting</title>
</head>
<body>
<p>
This page displays the <b>value</b> of the <b>customErrors</b> section of web.config.
</p>
<h3>Value:</h3>
<p>
<asp:Label ID="ConfigId" BackColor="#dcdcdc" BorderWidth="1" runat="Server" /></p>
</body>
</html>
 
J

Juan T. Llibre

I just realized you also wanted the defaultRedirect value.

Here's the modified code :
---------------------------------------
<%@ Page Language="VB" %>

<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Configuration" %>

<script runat="server">

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

' Set the root path of the Web application that contains the Web.config file that you want to access.
Dim configuration As System.Configuration.Configuration = WebConfigurationManager.OpenWebConfiguration("/YourAppName")

' Get the section.
Dim customErrorsSection As CustomErrorsSection = CType(configuration.GetSection("system.web/customErrors"), CustomErrorsSection)

' Read the <customErrors> section mode.

Dim currentMode As CustomErrorsMode = customErrorsSection.Mode
Dim currentDefaultRedirect As String = customErrorsSection.defaultRedirect

' Display the <customErrors> and defaultRedirect page information.

ConfigId.Text = "customErrors is: " & currentMode.ToString() & ", and the defaultRedirect page is : " & currentDefaultRedirect

End Sub
</script>

<html >
<head>
<title>Read customErrors Configuration Setting</title>
</head>
<body>

<p>
This page displays the <b>values</b> of the <b>customErrors and defaultRedirect</b> sections of web.config.
</p>
<h3>Values:</h3>
<p>
<asp:Label ID="ConfigId" BackColor="#dcdcdc" BorderWidth="1" runat="Server" /></p>
</body>
</html>
-------------

The modified sample is at : http://asp.net.do/test/readCustomErrors.aspx




Juan T. Llibre said:
Hi. Is it programatically possible in VB.NET to read the contents of web.config's <customErrors> element?

Sure it's possible.

See it working at : http://asp.net.do/test/readCustomErrors.aspx

Here's the source for that sample I wrote :

readCustomErrors.aspx:
-----------------------------------

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Configuration" %>

<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

' Set the root path of the Web application that contains the Web.config file that you want to access.

Dim configuration As System.Configuration.Configuration = WebConfigurationManager.OpenWebConfiguration("/test")

' Get the section.

Dim customErrorsSection As CustomErrorsSection = CType(configuration.GetSection("system.web/customErrors"), CustomErrorsSection)

' Read the <customErrors> section mode.

Dim currentMode As CustomErrorsMode = customErrorsSection.Mode

' Display the <customErrors> information.

ConfigId.Text = currentMode.ToString()

End Sub
</script>

<html >
<head>
<title>Read customErrors Configuration Setting</title>
</head>
<body>
<p>
This page displays the <b>value</b> of the <b>customErrors</b> section of web.config.
</p>
<h3>Value:</h3>
<p>
<asp:Label ID="ConfigId" BackColor="#dcdcdc" BorderWidth="1" runat="Server" /></p>
</body>
</html>
 
J

Juan T. Llibre

That's C#, the OP wants VB.NET...

;-)




Milosz Skalecki said:
Hi Mike,

using System.Web.Configuration;

// pass application virtual directory name
Configuration configuration =
WebConfigurationManager.OpenWebConfiguration("/TestWebsite");
CustomErrorsSection section =
(CustomErrorsSection)configuration.GetSection("system.web/customErrors");

foreach (CustomError error in section.Errors)
{
Response.Write(error.StatusCode);
}
 
G

Guest

I know, he should be fine. Anyway:

imports System.Web.Configuration

'pass application virtual directory name
Dim configuration As Configuration =
WebConfigurationManager.OpenWebConfiguration("/TestWebsite")
Dim section As CustomErrorsSection =
CType(configuration.GetSection("system.web/customErrors"),
CustomErrorsSection)

For Each err As CustomError In section.Errors
Response.Write(err.StatusCode)
Next
 
J

Juan T. Llibre

Hmmm...

I don't program the statusCode choices in web.config.

I program the statusCode errors in the defaultRedirect page:

errors.aspx:
----------------
<html>
<script language="VB" runat="server">
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Dim errMessage As String = ""
Dim appException As System.Exception = Server.GetLastError()
If (TypeOf (appException) Is HttpException) Then
Dim checkException As HttpException = CType(appException, HttpException)
Select Case checkException.GetHttpCode
Case 400
errMessage &= "Bad request. The file size is too large."
Case 401
errMessage &= "You are not authorized to view this page."
Case 403
errMessage &= "You are not allowed to view that page."
Case 404
errMessage &= "The page you have requested can't be found."
Case 408
errMessage &= "The request has timed out."
Case 500
errMessage &= "The server can't fulfill your request."
Case Else
errMessage &= "The server has experienced an error."
End Select
Else
errMessage &= "The following error occurred<BR>" & appException.ToString
End If

ErrorMessage.Text = errMessage & "<BR>We're sorry for the inconvenience."
Server.ClearError()
End Sub
</script>
<body>
<hr>
<asp:label id="ErrorMessage" font-size="12" font-bold="true" runat=server/>
<hr>
<p>Return to <a href="http://asp.net.do/"> asp.net.do entry page </a>
</body>
</html>
---------------

In your view, is redirecting to multiple error pages more efficient than
redirecting to a single error page which catches all the possible errors ?

If you think so, why ?
 
G

Guest

Thank you to everyone who contributed!

Juan, Thank you for providing a perfect example & sample code of what I'm
looking for!

Thanks all!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top