我有这个小页面:
<%@ 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,其他由守护程序发布)。如您所见,没有服务器控件,因为不需要它。因此,通过设置为 false 禁用了视图状态验证EnableViewStateMac
(至少我认为它是这样做的)。直到最近它一直运行良好。现在我开始收到此错误:
<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 页面有一个上传控件,可以通过 iframe 将异步上传到此页面(我在上面发布的页面)。仅在从所述共享点页面发布时才会失败。作为一种解决方法,我创建了另一个表单并使用此表单发布。主表单中可能有一个字段会触发 MAC 验证或其他内容。