General FAQs

Business Objects-related FAQs

General FAQs

Q:  Why do I not see detailed error messages when I have an error in my ASP.NET page?  I only see information about a generic runtime error like the following:

Server Error in '/appname' Application.
----------------------------------------------------
Runtime Error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed.

Details: To enable the details of this specific error message to be viewable on the local server machine, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "RemoteOnly". To enable the details to be viewable on remote machines, please set "mode" to "Off".

<!-- Web.Config Configuration File -->

<configuration>
    <system.web>
        <customErrors mode="RemoteOnly"/>
    </system.web>
</configuration>

Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.

<!-- Web.Config Configuration File -->
          
<configuration>
    <system.web>
        <customErrors mode="On" defaultRedirect="mycustompage.htm"/>
    </system.web>
</configuration>

A:  By default, ASP.NET applications are configured with custom error messages turned off.  However, some web development tools, such as Visual Studio.NET, will create a web.config file with the customErrors mode set to “RemoteOnly”.  In order to enable detailed error messages, you need to make sure that you either remove the customErrors section in your web.config file or that you set the mode attribute in the customErrors section to “Off” in your site’s web.config file.

<customErrors mode="off"/>

Be aware that when you set the customErrors mode to “Off” all visitors of your web site will see the detailed error message.

Note that due to the nature of the shared hosting platform the “RemoteOnly” and “On” modes of the customErrors section are equivalent since every visitor to your web site is browsing remotely.

Q:  Why do I receive an error like the following when I attempt to browse my ASP.NET page?

Server Error in '/appname' Application.
---------------------------------------------------
Configuration Error

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.

Parser Error Message: It is an error to use a section registered as allowDefinition='MachineOnly' beyond machine.config.

A:  You may have defined a section in your application’s web.config file that is not configurable on our shared web hosting platform.  Remove or comment out any configuration sections from your web.config file that are not supported.  See Supported Configuration Options for more information.

Q.  Which ASP.NET configuration options are supported in the ASP.NET implementation on the shared web hosting platform?

A:  Many of the ASP.NET configuration options are not configurable at the site, application or subdirectory level on the shared hosting platform. Certain options can affect the security, performance and stability of the server and, therefore cannot be changed. The following settings are the only ones that can be changed in your site's web.config file(s):

browserCaps
clientTarget
pages
customErrors
globalization
authorization
authentication
webControls
webServices

See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspnetconfiguration.asp for information on ASP.NET.

Q:  Are CodeBehind pages supported?

A:  Yes, CodeBehind pages are supported in our shared web hosting platform.  For more information on CodeBehind and the ASP.NET Web Form architecture, please see http://msdn.microsoft.com/library/en-us/cpguide/html/cpconwebformscodemodel.asp?frame=true

Q:  How do I send an email message from my ASP.NET page?

A:  You can use the System.Web.Mail.MailMessage and the System.Web.Mail.SmtpMail class to send email in your ASPX pages. Below is a simple example of using this class to send mail in C# and VB.NET.  In order to send mail through our mail server, you would want to make sure to set the static SmtpServer property of the SmtpMail class to mail-fwd.

C#
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Mail" %>
<HTML>
  <HEAD>
    <title>Mail Test</title>
  </HEAD>
     <script language="C#" runat="server">
 private void Page_Load(Object sender, EventArgs e)
 {
   try
   {
     MailMessage mailObj = new MailMessage();
     mailObj.From = "sales@joeswidgets.com";
     mailObj.To = "ringleader@forexample-domain.com";
     mailObj.Subject = "Your Widget Order";
     mailObj.Body = "Your order was processed.";
     mailObj.BodyFormat = MailFormat.Text;
            SmtpMail.SmtpServer = "mail-fwd";
     SmtpMail.Send(mailObj);
     Response.Write("Mail sent successfully");
   }
   catch (Exception x)
   {
     Response.Write("Your message was not sent: " + x.Message);
   }
 }
 
     </script>
     <body>
       <form id="mail_test" method="post" runat="server">
       </form>
     </body>
</HTML>
VB.NET
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Mail" %>
<HTML>
  <HEAD>
    <title>Mail Test</title>
  </HEAD>
 <script language="VB" runat="server">
   Sub Page_Load(sender As Object, E as EventArgs)
     Try
       Dim Mailer As MailMessage
       Mailer = New MailMessage()
       Mailer.From = "sales@joeswidgets.com"
       Mailer.To = "ringleader@forexample-domain.com"
       Mailer.Subject = "Your Widget Order"
       Mailer.Body = "Your order was processed."
       Mailer.BodyFormat = MailFormat.Text
              SmtpMail.SmtpServer = "mail-fwd"
       SmtpMail.Send(Mailer)
       Response.Write("Mail sent successfully")
     Catch ex As Exception
       Response.Write("Your message was not sent: " + ex.Message)
     End Try
   End Sub
 </script>
 <body>
   <form id="mail_test" method="post" runat="server">
   </form>
 </body>
</HTML>

Q:  How do I upload a file from my ASP.NET page?

A:  In order to perform file upload in your ASP.NET page, you will need to use two classes: the System.Web.UI.HtmlControls.HtmlInputFile class and the System.Web.HttpPostedFile class.  The HtmlInputFile class represents and HTML input control that the user will use on the client side to select a file to upload.  The HttpPostedFile class represents the uploaded file and is obtained from the PostedFile property of the HtmlInputFile class.  In order to use the HtmlInputFile control, you need to add the enctype attribute to your form tag as follows:

<form id="upload" method="post" runat="server" enctype="multipart/form-data">

Also, remember that the /data directory is the only directory with Write permissions enabled for the anonymous user.  Therefore, you will need to make sure that the your code uploads the file to the /data directory or one of its subdirectories.

Below is a simple example of how to upload a file via an ASP.NET page in C# and VB.NET.

C#
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI.HtmlControls" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>
<html>
<head>
  <title>upload_cs</title>
</head>
<script language="C#" runat="server">
  public void UploadFile(object sender, EventArgs e)
  {
    if (loFile.PostedFile != null)
    {
      try
      {
        string strFileName, strFileNamePath, strFileFolder;
        strFileFolder = Context.Server.MapPath(@"data\");
        strFileName = loFile.PostedFile.FileName;
        strFileName = Path.GetFileName(strFileName);
        strFileNamePath = strFileFolder + strFileName;
        loFile.PostedFile.SaveAs(strFileNamePath);
        lblFileName.Text = strFileName;
        lblFileLength.Text = loFile.PostedFile.ContentLength.ToString();
        lblFileType.Text = loFile.PostedFile.ContentType;
        pnStatus.Visible = true;
      }
      catch (Exception x)
      {
        Label lblError = new Label();
        lblError.ForeColor = Color.Red;
        lblError.Text = "Exception occurred: " + x.Message;
        lblError.Visible = true;
        this.Controls.Add(lblError);
      }
    }
  } 
</script>
<body>

<form id="upload_cs" method="post" runat="server" enctype="multipart/form-data">
<P>
  <INPUT type="file" id="loFile" runat="server">
</P>
<P>
  <asp:Button id="btnUpload" runat="server" Text="Upload" OnClick="UploadFile"></asp:Button></P>
<P>
  <asp:Panel id="pnStatus" runat="server" Visible="False">
   <asp:Label id="lblFileName" Font-Bold="True" Runat="server"></asp:Label> uploaded<BR>
   <asp:Label id="lblFileLength" Runat="server"></asp:Label> bytes<BR>
   <asp:Label id="lblFileType" Runat="server"></asp:Label>
   </asp:Panel></P>
</form>
</body>
</html>
VB.NET
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.UI.HtmlControls" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Drawing" %>
<HTML>
<HEAD>
  <title>upload</title>
</HEAD>
  <script language="VB" runat="server">
    Sub UploadFile(sender as Object, e as EventArgs)
      If Not (loFile.PostedFile Is Nothing) Then
        Try
          Dim strFileName, strFileNamePath, strFileFolder As String
          strFileFolder = Context.Server.MapPath("data\")
          strFileName = loFile.PostedFile.FileName
          strFileName = Path.GetFileName(strFileName)
          strFileNamePath = strFileFolder + strFileName
          loFile.PostedFile.SaveAs(strFileNamePath)
          lblFileName.Text = strFileName
          lblFileLength.Text = loFile.PostedFile.ContentLength.ToString()
          lblFileType.Text = loFile.PostedFile.ContentType
          pnStatus.Visible = True
        Catch ex As Exception
          Dim lblError As Label
          lblError = New Label()
          lblError.ForeColor = Color.Red
          lblError.Text = "Exception occurred: " + ex.Message
          lblError.Visible = True
          Page.Controls.Add(lblError)
        End Try
      End If
    End Sub
  </script>
<body MS_POSITIONING="FlowLayout">
<form id="upload" method="post" encType="multipart/form-data" runat="server">
<P><INPUT id="loFile" type="file" name="loFile" runat="server">
</P>
<P><asp:button id="btnUpload" onclick="UploadFile" runat="server" Text="Upload"></asp:button></P>
<P><asp:panel id="pnStatus" runat="server" Visible="False">
<asp:Label id="lblFileName" Runat="server" Font-Bold="True"></asp:Label>&nbsp;uploaded<BR>
<asp:Label id="lblFileLength" Runat="server"></asp:Label>bytes<BR>
<asp:Label id="lblFileType" Runat="server"></asp:Label></asp:panel></P>
</form>
</body>
</HTML>

Business Objects-related FAQs

Q: To which directory are business objects (compliled DLLs) uploaded?

A: Each ASP.NET application(web sites are now referred to as applications - child webs, etc....) is automatically configured to look in the \bin subdirectory, located immediately under your application root, for the required .NET assemblies. By default, the root of your site is an application. Remember,  using certain tools such as Visual Interdev or Visual Studio.NET, you can create more than one application on your site. Each application would need its own \bin directory. If you are using Visual Studio.NET, your application (and its \bin directory) will be created automatically when you create a new web project in a subdirectory of your site.

Q: Are these business objects compiled?

A: The simple answer is on the client side. If you are using VB.NET and VisualInterdev, the objects are compiled and uploaded automatically. These processes are transparent to the user. If a command line compiler is used, then the client must upload the object to the /bin directory of the root application or application subdirectory.

Q: Is there any change to the global.asax file?

A: No, it is the same as the global.asa found today. .NET does, however, introduce a new file called "web.config" to set parameters for your site.

Please note: the information on this page applies to ITS web hosting plans. It may or may not apply to other environments. If you are looking for a feature described here, or better support from your hosting provider, please consider hosting your site with ITS!

1555 N Naperville/Wheaton Road, Suite 107
Naperville, IL 60563
phone 630.420.2550
fax 630.420.2771