0

そのため、未処理の例外が発生したときにメールが送信されるように、Global.asax ファイルを設定しました。ユーザーには表示されない例外を含む電子メールを受け取り、コードはクライアント側で正常に動作しているように見え、ページが読み込まれ、期待どおりに動作します。

aspx ファイルにこのコードがあり、役割に基づいたチェックボックス、または特定の文字で始まる顧客番号が表示されます...

<%  if (Roles.IsUserInRole("Admin") ||
                   txtAccountNo.Text.Substring(0, 2) == "UK" ||
                   txtAccountNo.Text.Substring(0, 2) == "FR" ||
                   txtAccountNo.Text.Substring(0, 2) == "IT" ||
                   txtAccountNo.Text.Substring(0, 2) == "DK" ||
                   txtAccountNo.Text.Substring(0, 2) == "SE")
               { %>
            <label for="chkExpressDelivery"><asp:Literal ID="Literal14" runat="server" Text="<%$ Resources:LocalizedText, fieldLabel_ExpressDelivery %>"></asp:Literal><span class="small"></span></label>
            <asp:CheckBox ID="chkExpressDelivery" runat="server" Width="50px" CssClass="_checkbox _normalcheckbox" Text="&nbsp;" />
            <%} %>

現在、txtAccountNo は aspx.cs ファイルの Page_Load イベントのユーザー プロファイル プロパティから設定されています。

メールで受け取ったエラー メッセージ (クライアントには表示されません) は次のとおりです。

インデックスと長さは、文字列内の場所を参照する必要があります。パラメータ名: 長さ

私はエラーメッセージを理解しています.txtAccountNo.Textは基本的にそのコードが実行されたときに空であると言っています.

しかし、web.config ファイルでカスタム エラー メッセージを有効にすると、クライアントはカスタム エラー ページに誘導されますが、それがなければ、クライアントに関する限りエラーは発生しません。

このエラーを修正して、カスタム エラー ページを有効にするにはどうすればよいでしょうか。

これが理にかなっていることを願っています!さらに情報が必要な場合はお知らせください。

ありがとう

スチュアート

このコードは機能するようになりました...

<%  if (txtAccountNo.Text.Length > 0 && (Roles.IsUserInRole("Admin") ||
               txtAccountNo.Text.Substring(0, 2) == "UK" ||
               txtAccountNo.Text.Substring(0, 2) == "FR" ||
               txtAccountNo.Text.Substring(0, 2) == "IT" ||
               txtAccountNo.Text.Substring(0, 2) == "DK" ||
               txtAccountNo.Text.Substring(0, 2) == "SE"))
           { %>
        <label for="chkExpressDelivery"><asp:Literal ID="Literal14" runat="server" Text="<%$ Resources:LocalizedText, fieldLabel_ExpressDelivery %>"></asp:Literal><span class="small"></span></label>
        <asp:CheckBox ID="chkExpressDelivery" runat="server" Width="50px" CssClass="_checkbox _normalcheckbox" Text="&nbsp;" />
        <%} %>
4

1 に答える 1

1

クライアントに表示されないエラーがあります。ページでAJAXコントロールを使用していて、クライアントに特定のIEバージョンがあるときに発生しました。クライアントは影響を受けませんでしたが、Emahを介してエラーメールを送信し続けました。
カスタムエラーをアクティブ化すると、アプリケーションまたはIISサーバーがエラーをキャッチし、特定の方法で解釈する場合があります。このようなもの: Webサーバーでのmvc3エラー、一般的な応答のみを取得するおそらくそれがリダイレクトが発生する理由です。
エラーの原因(txtAccountNo.Textが空)について:ページイベントのlifサイクル(初期化など)の特定の瞬間にコードが実行された場合、コントロールにデータがありません。エラーを回避するには、if句に別の条件を追加して、txtAccountNo.Length>0を確認します。

于 2012-11-05T11:18:28.587 に答える