0

Vista、ビジュアルWeb開発者エクスプレス2010、C#、asp.net、Webフォーム。ctrl-F5でプログラムを実行しています。このプログラムを実行するのは私だけです...そして、ローカルデータベースを使用して私のラップトップでのみ実行されます。

Webページをダウンロードして表示し(分析を行い)、結果をログに記録するアプリを作成します。ページをダウンロードするためのコードを見つけました-うまく機能します。次に、テキストボックスのtextプロパティをページの文字列の内容と同じに設定します。その部分も機能します。次に、コードを再度実行しましたが、テキストボックスの内容が検証され、エラーメッセージが表示されます。

A potentially dangerous Request.Form value was detected from the client (ctl00$MainContent$tbPageContents="
<!DOCTYPE HTML PUBLI..."). 

結果をテキストボックスに表示しない限り、問題なくコードを何度も実行できます。私はいくつかの異なる解決策を試しました:

  1. テキストボックスでenabled="false"属性を試しました...これにより、コードの最初の部分を表示できますが、テキストボックスが有効になっていないため、上下にスクロールしてファイルを表示できません。したがって、これは実際には問題を解決しません。

  2. ページディレクティブとsystem.web( http://www.asp.net/learn/whitepapers/request-validationによる)でvalidateRequest = "false"を設定しようとしましたが、私が知る限り、効果はありません。 。つまり、まだエラーが発生します。

  3. 文字列の内容をテキストボックスに入れる前に、HTMLエンコードを使用してみました。これはディスプレイ上で機能します...しかし、問題の次の反復で失敗するという問題は修正されません。

  4. エラーをキャッチして無視することを考えましたが、コードビハインドを実行する前に検証が行われるようです。

分析を行うために実際にページをウィンドウに印刷する必要はありませんが、これらを一度に、またはスニペットで見ることができれば非常に役立ちます。ブラウザからページソースを作成するだけで済みます。よくわかりません...多分それが好ましい解決策です。

オプション#2が推奨される解決策のように思われるため、機能しなかったことに本当に驚いています。

これが私が使用するページディレクティブです:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="wan._Default" validateRequest="false" %>

validateRequestを停止するために他に何かする必要がありますか?

4

2 に答える 2

2

<httpRuntime requestValidationMode="2.0" />web.configファイルでも使用する必要があります。これにより、ASP.NETに検証モードをバージョン2.0に変更するように指示されます。

この質問もご覧ください。

于 2011-11-22T05:36:40.087 に答える
0

これが.NET4の場合は<httpRuntime requestValidationMode="2.0" />、web.configに追加する必要がある場合もあります。

于 2011-11-22T05:39:23.860 に答える