2017-11-26 14 views
0

セッション状態からex Exceptionオブジェクトを取得し、例外のMessageプロパティを表示するにはどうしたらいいですか?

ERROR.ASPX.CS page 
 

 
using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Web; 
 
using System.Web.UI; 
 
using System.Web.UI.WebControls; 
 

 
namespace XEx21HandleErrors 
 
{ 
 
    public partial class Error : System.Web.UI.Page 
 
    {  
 
     protected void Page_Load(object sender, EventArgs e) 
 
     { 
 

 
      lblError.Text = ex.Message; 
 
     } 
 
    } 
 
}

ERROR.ASPX 
 

 

 
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Error.aspx.cs" Inherits="XEx21HandleErrors.Error" %> 
 

 
<asp:Content ContentPlaceHolderID="mainPlaceholder" runat="server"> 
 
    <h1 class="text-danger">An error has occurred</h1> 
 
    <div class="alert alert-danger"> 
 
     <p><asp:Label ID="lblError" runat="server"></asp:Label></p> 
 
    </div> 
 
    <asp:Button ID="btnReturn" runat="server" Text="Return to Order Page" 
 
     PostBackUrl="~/Order.aspx" CssClass="btn btn-danger" /> 
 
</asp:Content>

CONFIRMATION.ASPX.CS 
 

 
using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Web; 
 
using System.Web.UI; 
 
using System.Web.UI.WebControls; 
 

 
using System.Net.Mail; 
 

 
namespace XEx21HandleErrors 
 
{ 
 
    public partial class Confirmation : System.Web.UI.Page 
 
    { 
 
     protected void Page_Load(object sender, EventArgs e) 
 
     { 
 
      var customer = (Customer)Session["Customer"]; 
 
      var date = DateTime.Today.AddDays(1).ToShortDateString(); 
 
      var text = $"Thank you for your order, {customer.FirstName}! It will be shipped on {date}."; 
 

 
      lblConfirm.Text = text; 
 
      SendConfirmation(customer, text); 
 
     } 
 

 
     private void SendConfirmation(Customer customer, string body) 
 
     { 
 
      try 
 
      { 
 
      MailMessage msg = new MailMessage("[email protected]", customer.EmailAddress); 
 
      msg.Subject = "Order Confirmation"; 
 
      msg.Body = body; 
 

 
      string html = "<html><head><title>Order Confirmation</title></head>" 
 
         + "<body><h3>Thanks for your order!</h3>" 
 
         + "<p>" + body + "</p></body></html>"; 
 
      AlternateView view = AlternateView.CreateAlternateViewFromString(html, null, "text/html"); 
 
      msg.AlternateViews.Add(view); 
 

 
      SmtpClient client = new SmtpClient("localhost"); 
 
      client.Send(msg); 
 
      } 
 
      catch (Exception ex) 
 
      { 
 
       Session["Exception"] = ex; 
 
       Response.Redirect("~/Error.aspx"); 
 
      } 
 

 

 
     } 
 
    } 
 
}

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Order.aspx.cs" Inherits="XEx21HandleErrors.Order" %> 
 

 
<asp:Content ID="mainContent" ContentPlaceHolderID="mainPlaceholder" runat="server"> 
 
    <div class="row"><%-- row 1 --%> 
 
     <div class="col-sm-8"><%-- product drop down and info column --%> 
 
      <div class="form-group"> 
 
       <label class="col-sm-6">Please select a product:</label> 
 
       <div class="col-sm-6"> 
 
        <asp:DropDownList ID="ddlProducts" runat="server" AutoPostBack="True" 
 
         DataSourceID="SqlDataSource1" DataTextField="Name" 
 
         DataValueField="ProductID" CssClass="form-control"> 
 
        </asp:DropDownList> 
 
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
 
         ConnectionString='<%$ ConnectionStrings:HalloweenConnection %>' 
 
         SelectCommand="SELECT [ProductID], [Name], [ShortDescription], 
 
         [LongDescription], [ImageFile], [UnitPrice] FROM [Products] 
 
         ORDER BY [Name]"> 
 
        </asp:SqlDataSource> 
 
       </div> 
 
      </div> 
 
      <div class="form-group"> 
 
       <div class="col-sm-12"><h4><asp:Label ID="lblName" runat="server"></asp:Label></h4></div></div> 
 
      <div class="form-group"> 
 
       <div class="col-sm-12"><asp:Label ID="lblShortDescription" runat="server"></asp:Label></div></div> 
 
      <div class="form-group"> 
 
       <div class="col-sm-12"><asp:Label ID="lblLongDescription" runat="server"></asp:Label></div></div> 
 
      <div class="form-group"> 
 
       <div class="col-sm-12"><asp:Label ID="lblUnitPrice" runat="server"></asp:Label></div></div> 
 
     </div> 
 
     <div class="col-sm-4"><%-- product image column --%> 
 
      <asp:Image ID="imgProduct" runat="server" /> 
 
     </div> 
 
    </div><%-- end of row 1 --%> 
 
    <div class="row"><%-- row 2 --%> 
 
     <div class="col-sm-12"> 
 
      <div class="form-group"> 
 
       <label class="col-sm-2">Quantity:</label> 
 
       <div class="col-sm-3"> 
 
        <asp:TextBox ID="txtQuantity" runat="server" 
 
         CssClass="form-control"></asp:TextBox></div> 
 
       <div class="col-sm-7"> 
 
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" CssClass="text-danger" 
 
         runat="server" ControlToValidate="txtQuantity" Display="Dynamic" 
 
         ErrorMessage="Quantity is a required field."></asp:RequiredFieldValidator> 
 
        <asp:RangeValidator ID="RangeValidator1" runat="server" CssClass="text-danger" 
 
         ControlToValidate="txtQuantity" Display="Dynamic" 
 
         ErrorMessage="Quantity must range from 1 to 500." 
 
         MaximumValue="500" MinimumValue="1" Type="Integer"></asp:RangeValidator></div> 
 
      </div> 
 
      <div class="form-group"> 
 
       <div class="col-sm-12"> 
 
        <asp:Button ID="btnAdd" runat="server" Text="Add to Cart" 
 
         onclick="btnAdd_Click" CssClass="btn" /> 
 
        <asp:Button ID="btnCart" runat="server" Text="Go to Cart" 
 
         PostBackUrl="~/Cart.aspx" CausesValidation="False" CssClass="btn" /> 
 
        <asp:Button ID="btnCheckOut" runat="server" Text="Check Out" 
 
         PostBackUrl="~/CheckOut1.aspx" CausesValidation="False" CssClass="btn" /> 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </div><%-- end of row 2 --%> 
 
</asp:Content>

みなさん、こんにちは、

ユーザーは、このような電子メールに入ったとき、私は私が例外エラーメッセージを表示するアプリケーションに取り組んでいます:電子メールのテキストボックスの内側メールが、問題を私は、セッション状態からの例外オブジェクトを取得し、エラーページのラベルに例外のMessageプロパティを表示する方法について混乱しています。ここにいくつかのWebアプリケーションのページがあります。私はError.aspx.cs(またはコードビハインドファイル)でこれをやろうとしています。誰も助けることができると思いますか?

答えて

1

これらのページ/イベントでtry catchを使用します。 Error.aspx

protected void Page_Load(object sender, EventArgs e) 
     { 
      lblError.Text = Session["ErrorMsg"] == null ? "" : Session["ErrorMsg"].ToString(); 
     } 

try { 
     //Do stuffs here such as pageload, click events and so on... 
    } 
catch(Exception ex) 
    { 
     Session["ErrorMsg"] = ex.Message; 
     Response.Redirect("~/Error.aspx"); 
    } 

関連する問題