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,其他由守护程序发布)。如您所见,没有服务器控件,因为不需要它。因此,通过设置为 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 &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 页面有一个上传控件,可以通过 iframe 将异步上传到此页面(我在上面发布的页面)。仅在从所述共享点页面发布时才会失败。作为一种解决方法,我创建了另一个表单并使用此表单发布。主表单中可能有一个字段会触发 MAC 验证或其他内容。

4

2 回答 2

0

我有同样的错误,但网上建议的解决方案不起作用。浪费了几个小时,直到我意识到在重新启动 IIS 后我没有重新启动浏览器(由于一些配置更改)。所以我重启浏览器后问题就解决了

我猜一旦 IIS 重新启动,视图状态就会失效。

于 2014-01-04T17:46:00.203 回答
0

我相信这个例外会给你一个提示,告诉你如何解决这个问题。场中的每台服务器都应具有相同的machineKey设置,以便一台服务器可以解密另一台计算机的视图状态。

于 2013-10-25T23:08:36.640 回答