0

私はこの小さなページを持っています:

<%@ Page Language="C#" AutoEventWireup="true" Inherits="Company.Pages.Uploader" EnableViewStateMac="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" class="form-uploader" runat="server">
    <div>
        <pre id="jsonSpanContainer" runat="server" class="jsonDataContainer"></pre>          
    </div>
    </form>
</body>
</html>

そして、このページには、投稿されたファイルを保存するという単純な仕事があります (JavaScript を介して投稿されたものもあれば、デーモンによって投稿されたものもあります)。ご覧のとおり、必要がないため、サーバー コントロールはありません。そのため、ビューステートの検証はEnableViewStateMacfalse に設定することで無効にされました (少なくとも、それが機能していると思います)。最近まで正常に動作していました。今、私はこのエラーを受け取り始めました:

<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>

<h2> <i>Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that &lt;machineKey&gt; configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.</i> </h2></span>

<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">

<b> Description: </b>An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

<b> Exception Details: </b>System.Web.HttpException: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that &lt;machineKey&gt; configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.<br><br>

コードに変更はありませんでした。アップデートが原因だったのか、それとも何かが原因だったのかはまだわかりません。私はまた、設定がノーノーであることを読み ましたEnableViewState: https://stackoverflow.com/a/14210118/642269

とにかくこれを回避できますか?このページのビュー ステートは本当に必要ありませんが、サイトの残りの部分でビュー ステートが使用されています。この特定のページだけを無効にする方法はありますか? 更新: 投稿に失敗しているページは、SharePoint ページです。sharepoint ページには、iframe を介してこのページ (上で投稿したページ) への非同期アップロードを行うアップロード コントロールがあります。上記のsharepointページから投稿する場合にのみ失敗します。回避策として、別のフォームを作成し、このフォームを使用して投稿しました。メイン フォームには、MAC 検証などをトリガーするフィールドがおそらくあります。

4

2 に答える 2

0

同じエラーが発生しましたが、ネットで提案された解決策は機能しませんでした。IIS を再起動した後、ブラウザーを再起動していないことに気付くまで、数時間を失いました (構成の変更により)。そのため、ブラウザを再起動すると問題は解決しました

IIS を再起動すると、viewstate が無効になると思います。

于 2014-01-04T17:46:00.203 に答える
0

例外は、問題を解決する方法としてヒントを与えると思います。ファーム内の各サーバーには同じmachineKey設定が必要です。これにより、一方のサーバーが他方のマシンからのビュー ステートを復号化できるようになります。

于 2013-10-25T23:08:36.640 に答える