私はこの小さなページを持っています:
<%@ 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 を介して投稿されたものもあれば、デーモンによって投稿されたものもあります)。ご覧のとおり、必要がないため、サーバー コントロールはありません。そのため、ビューステートの検証はEnableViewStateMac
false に設定することで無効にされました (少なくとも、それが機能していると思います)。最近まで正常に動作していました。今、私はこのエラーを受け取り始めました:
<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 <machineKey> 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 <machineKey> 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 検証などをトリガーするフィールドがおそらくあります。