关于ScriptResource.axd,我收到了一个无效的viewstate错误.只是想知道你是否有人可以帮助我.错误是:
2009-02-24 09:46:30,021 [13] DEBUG ASP.global_asax [(null)] - Request start - URL: /Web/ScriptResource.axd?d=E9hlvtsn8Gr1MyjysW1gFDFYr4CVwstY-sC22tRu5V8d7UyEYz3FhVYGrlhY87n2ihgKh58RrMRhK-Yk2WcQahEaCg_asTInqHK 2009-02-24 09:46:30,021 [13] DEBUG ASP.global_asax [(null)] - Application_AuthenticateRequest started 2009-02-24 09:46:30,021 [13] ERROR ASP.global_asax [(null)] - Unexpected error. User presented with Site Error page. System.Web.HttpException: Invalid viewstate. at System.Web.UI.Page.DecryptStringWithIV(String s, IVType ivType) at System.Web.UI.Page.DecryptString(String s) at System.Web.Handlers.ScriptResourceHandler.DecryptParameter(NameValueCollection queryString) at System.Web.Handlers.ScriptResourceHandler.ProcessRequestInternal(HttpResponse response, NameValueCollection queryString, VirtualFileReader fileReader) at System.Web.Handlers.ScriptResourceHandler.ProcessRequest(HttpContext context) at System.Web.Handlers.ScriptResourceHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
这发生在生产环境中.我无法在开发和测试环境中重现这一点.这些页面也只能由经过身份验证的用户访问.如果你能对这个问题有所了解,那将是真的.
减少JSF中viewstate隐藏字段大小的最佳方法是什么?我注意到我的视图状态大约是40k,这会下降到客户端并在每次请求时回到服务器,并且响应通常会发送到服务器,这对用户来说是一个显着的减速.
我的环境JSF 1.2,MyFaces,Tomcat,Tomahawk,RichFaces
现在我已经看到了这样的一些问题,但这并不是我想要问的问题,所以对于所有那些尖叫的复制品,我道歉:).
我几乎没有碰过ASP.NET MVC,但据我所知,没有ViewState/ControlState ......很好.所以我的问题是保留控件状态的替代方法是什么?我们是否可以回到旧学校ASP,在那里我们可以通过创建具有控件状态的隐藏表单输入来模拟ASP.NET ViewState/ControlState所做的事情,或者使用MVC,我们只是假设AJAX始终并保留所有状态客户端并制作AJAX要求更新?
这个问题有一些答案,在Asp.net mvc维护viewstate?,但不完全是我在答案中寻找的东西.
更新:感谢目前为止的所有答案.只是为了清理我不想要的东西和我正在寻找的东西:
不寻找:
我在/正在寻找什么:
我正在尝试清理一个在任何地方都启用了ViewState的旧的ASP.NET WebForms站点.这是一个性能问题 - 巨大的观点导致明显的提交延迟.但是除了一些复杂的控件和表单数据之外,大多数表单似乎都不需要ViewState.即使是没有输入控件的表单,也会生成大型视图状态,因为我猜asp.net存储了关于每个服务器控件的各种元数据.但是可见性状态等都是在代码中控制的,所以我认为我可以消除很多.
添加EnableViewState="false"到不需要它的每个控件(在页面中并在代码中创建)是非常繁重的,所以我试图在页面/控件级别禁用它,并选择性地为需要它的东西启用它.(是的,我意识到这是有风险的,但实际上只有几个大的形式和几个模板,如果解决会产生很大的不同).
这是我没有得到的.
如果控件或页面具有EnableViewState="false"其<%.. %>描述符,或者在其父页面中创建它的标记中,则一切都会中断,因为在代码中添加的任何ViewState数据都不起作用.所以我似乎能够在控件级别启用它,但是EnableViewState对于每个容器中的包装器控件设置为false,然后ViewStateMode=true在每个控件级别设置(以此为止).
我没有得到的是以下情况:
ViewStateMode = ViewStateMode.Enabled以及
EnableViewState = false包含其他控件的控件.
控制.内部控件是否仍可启用ViewStateMode?基本上,哪个设置在冲突时有最终结论?
对于每个容器,我希望能够在包装器控件中禁用所有内容,但仍然确保:
1)代码工作中的ViewState设置,和
2)默认情况下,对所有控件禁用ViewState,和
3)我可以选择性地启用ViewState以进行子控制.
这似乎令人困惑.如果我在母版页中设置了一个包装器控件EnableViewState="false",但随后设置了一个子控件ViewStateMode="Enabled",它就会中断.根据MS,ViewStateMode应该取代任何外部ViewState设置,但它似乎不起作用.
机器密钥在asp.net中有哪些不同的用途?我认为以下是正确的,但认为可能还有更多.
我的BasePage课程中有以下内容,我的所有ASPX页面都来自:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ViewStateUserKey = Session.SessionID;
}
Run Code Online (Sandbox Code Playgroud)
我也machineKey有一套Web.config.我不认为这个错误是因为Web场,因为这也发生在我的开发机器上.
我的主机现已升级到.NET 3.5 SP1.在此更新之后,每次使用ViewStateUserKey上面的设置进行编译时,我都会在每次回发时不断获得"viewstate MAC failed"验证错误.
我在这做错了什么?使用最新的框架更新,此设置是否更加必要?
我有一个网站,其中包含一些不需要任何回发功能的页面.它们只显示静态 HTML,甚至没有任何相关的代码.但是,由于母版页有一个<form runat="server">包装所有ContentPlaceHolders 的标记,因此生成的HTML总是包含ViewState字段,即:
<input
type="hidden"
id="__VIEWSTATE"
value="/wEPDwUKMjEwNDQyMTMxM2Rk0XhpfvawD3g+fsmZqmeRoPnb9kI="
/>
Run Code Online (Sandbox Code Playgroud)
编辑:我尝试了EnableViewState在页面级别设置的两种变体,但没有运气:
<%@ Page Language="C#" EnableViewState="false" %>
<%@ Page Language="C#" EnableViewState="true" %>
Run Code Online (Sandbox Code Playgroud)
我意识到,当解密时,该input字段的值对应于<form>我无法删除的标记,因为它在我的母版页上.但是,我仍然希望删除仅显示静态HTML的页面的ViewState字段.可能吗?
我需要在我的Web应用程序中完全禁用viewstate for aspx页面.我经历过不同的博客,我理解的是我们必须设置<%@ Page EnableViewState="false" ...%>.但这不起作用.我的问题是,这是否足以禁用页面内所有控件的viewstate?或者我应该进行任何其他修改吗?请具体说明.我不想在aspx页面内启用viestate甚至单个控件
我维护的其中一个网站在很大程度上依赖于使用ViewState(它不是我的代码).但是,在某些ViewState特别容易发生爆炸的页面上,Safari会抛出"Validation of viewstate MAC failed"错误.
这似乎只发生在Safari中.Firefox,IE和Opera都在同一场景中成功加载.
我试图在客户端访问视图状态但是在出现异常后:

JAVASCRIPT:
<script language="javascript" type="text/javascript">
var vCode = '<%=ViewState("code")%>';
alert(dateView);
</script>
Run Code Online (Sandbox Code Playgroud)
代码背后:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ViewState("code") = "EE"
End Sub
Run Code Online (Sandbox Code Playgroud)
有谁建议我怎么做?
viewstate ×10
asp.net ×6
c# ×3
optimization ×2
.net ×1
ajax ×1
asp.net-2.0 ×1
asp.net-mvc ×1
bandwidth ×1
cookies ×1
java ×1
javascript ×1
jsf ×1
machinekey ×1
safari ×1