标签: viewstate

com.sun.faces.numberOfViewsInSession vs com.sun.faces.numberOfLogicalViews

Mojarra JSF 2的实现具有以下上下文参数:

  • com.sun.faces.numberOfViewsInSession (默认为15)
  • com.sun.faces.numberOfLogicalViews (默认为15)

他们之间有什么区别?文档中没有提到这些内容.我的应用程序在ViewExpiredException某些页面遇到问题,但在我们将这些设置提高到(更高)值后,我们就停止了问题.

我的应用程序是一个财务,重量级,支持Ajax的应用程序(有些屏幕有50多个输入,可以选择通过AJAX添加更多数据/输入).

这种行为可能是什么原因?我知道第一个参数定义了会话中保存的"页面"的数量,这对于后退按钮可能很有用,但我触发的用例ViewExpiredException不使用后退按钮.第二个参数是指什么?如果我保持在同一个屏幕但通过AJAX继续添加大量数据,这是否会导致需要更多的逻辑视图用于页面?

viewstate jsf jsf-2 viewexpiredexception mojarra

36
推荐指数
2
解决办法
3万
查看次数

Asp.net对viewstate MAC的验证失败

我在asp.net网站上的某些时候收到以下错误.

 Sys.WebForms.PageRequestManagerServerErrorException: 
 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.
Run Code Online (Sandbox Code Playgroud)

当页面刷新时,没问题.我怎样才能解决这个问题?

asp.net viewstate machinekey

31
推荐指数
6
解决办法
13万
查看次数

WebResource.axd上的"填充无效且无法删除"异常

我有一个ASP.NET 2.0应用程序,在我们的本地环境中工作正常.发布到测试服务器时,我们在服务器上出现间歇性错误.

这是最常见的:

填充无效,无法删除.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Security.Cryptography.CryptographicException: 填充无效,无法删除.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[CryptographicException:填充无效,无法删除.]
System.Security.Cryptography.RijndaelManagedTransform.DecryptData(Byte [] inputBuffer,Int32 inputOffset,Int32 inputCount,Byte []&outputBuffer,Int32 outputOffset,PaddingMode paddingMode,Boolean fLast)+1545747
System.Security.Cryptography.RijndaelManagedTransform.TransformFinalBlock(Byte [] inputBuffer,Int32 inputOffset,Int32 inputCount)+257
System.Security.Cryptography.CryptoStream.FlushFinalBlock()+30 System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt,Byte [] buf,Byte []修饰符,Int32 start,Int32 length,Boolean useValidationSymAlgo)+164
System.Web.UI.Page.DecryptString(String s)+83
System.Web.Handlers.AssemblyResourceLoader.System.Web.IHttpHandler.ProcessRequest(HttpContext context)+148
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+358 System.Web.HttpApplication.ExecuteStep(IExecutionStep step ,Boolean&completedSynchronously)+64

这发生在对特定WebResource.axd请求的请求上.

我们看到的另一个错误是:

验证视图状态MAC失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法.AutoGenerate不能在群集中使用.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Web.HttpException:viewstate MAC验证失败.如果此应用程序由Web场或群集托管,请确保配置指定相同的validationKey和验证算法.AutoGenerate不能在群集中使用.

发布表单时偶尔会发生此错误.

在你跳入并告诉我这个错误的明显(通常)答案之前,请考虑一下:

  • 该应用程序部署到IIS6上的Windows Server 2003
  • 它不在Web场上.这里只使用一个网络服务器.
  • 应用程序池标识是一个自定义服务帐户,我确实aspnet_regiss -ga <username>在服务器上运行.没有效果.

asp.net viewstate webresource.axd

30
推荐指数
1
解决办法
3万
查看次数

ViewState是否与ASP.NET MVC相关?

我正在学习ASP.NET MVC,许多"ASP.NET"概念,如身份验证,授权,会话状态仍然适用于它.

但是从我所理解的一点点来看,我都没有看到ViewState在ASP.NET应用程序中仍然具有相关性.但它存在(System.Web.Mvc.ViewPage的属性)!是仅出于兼容性原因还是有一些目的/用途?

.net asp.net viewstate asp.net-mvc

27
推荐指数
2
解决办法
2万
查看次数

取消选中时,ASP.NET CheckBox不会触发CheckedChanged事件

我在ASP.NET内容表单上有一个CheckBox,如下所示:

<asp:CheckBox runat="server" ID="chkTest" AutoPostBack="true" OnCheckedChanged="chkTest_CheckedChanged" />
Run Code Online (Sandbox Code Playgroud)

在我的代码后面我有以下方法:

protected void chkTest_CheckedChanged(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中加载页面并单击CheckBox时,它会被检查,页面会回发,我可以看到chkTest_CheckedChanged被调用.

然后,当我再次单击CheckBox时,它将取消选中,页面会回发,但chkTest_CheckedChanged不会被调用.

该过程是可重复的,因此一旦取消选中CheckBox,检查它将触发事件.

我在Web.Config中禁用了View State,启用View State会导致此问题消失.在View State保持禁用状态时,我可以做些什么才能获得可靠的事件?

更新: 如果我Checked="true"在服务器标签上设置,当取消选中CheckBox时事件触发,情况就会反转,而不是相反.

更新2: 我已经OnLoadComplete在我的页面中覆盖了,并且从那里我可以确认Request.Form["__EVENTTARGET"]已正确设置我的CheckBox的ID.

asp.net viewstate

27
推荐指数
5
解决办法
7万
查看次数

25
推荐指数
4
解决办法
5万
查看次数

来自Fragments的`onViewStateRestored`如何工作?

我真的很困惑片段的内部状态.如果另一个Fragment应该显示,我有一个Activity只能同时保存一个Fragment并替换它.如果onSaveInstanceState调用Activitys (在我的情况下不调用),则调用docs onSaveInstanceState.

如果我停止我的片段,我会将自己的状态存储在一个单身人士中(是的,我知道我也讨厌单身人士,但这不是我的想法).所以我必须重新创建整个ViewHirarchy,创建新的视图(通过使用关键字new),恢复其状态并将其返回onCreateView.我也有这种说法,从我做明确里面一个复选框希望存储的状态.

然而,FragmentManager想要"智能"并且onViewStateRestored使用Bundle 调用我从未创建过自己,并"恢复"旧状态CheckBox并将其应用于我的新CheckBox.这引发了很多问题:

我可以控制捆绑onViewStateRestored吗?

FragmentManager如何获取(可能是垃圾收集的)CheckBox的状态并将其应用于新的CheckBox?

为什么它只保存Checkbox的状态(不是TextViews ??)

总结一下:onViewStateRestored工作怎么样?

注意我正在使用Fragmentv4,因此不需要API> 17 onViewStateRestored

viewstate android restore fragment android-fragments

23
推荐指数
1
解决办法
1万
查看次数

viewstate到期了吗?

假设您有一个不依赖于会话的aspx页面,但依赖于viewstate来表示回发之间的持久性.

如果用户正在访问此页面并离开长时间的午餐,那么当他返回时,viewstate仍然有效吗?

asp.net viewstate

21
推荐指数
5
解决办法
3万
查看次数

用户控件(ascx)和属性

我发现在用户控件中保留属性值的唯一方法是使用ViewState.

public string Title {
        get { return Convert.ToString(ViewState["Title"]); }
        set { ViewState["Title"] = value; }
    }
Run Code Online (Sandbox Code Playgroud)

我不能说我对此印象非常深刻,因为用户控件的属性越多,你就越容易陷入ViewState.是否有更好的方法来坚持物业?

asp.net viewstate user-controls properties

21
推荐指数
3
解决办法
1万
查看次数

asp.net viewstate加密问题

我试图打开viewstate加密始终作为IIS6中托管的ASP.NET 3.5网站的安全措施.我们关闭了viewstate,但仍然在此字符串中看到一些"controlstate".在测试环境中,我只需在web.config中设置以下内容,我就不能再将basest解码为viewstate为半明文:

<pages enableViewState="false" enableViewStateMac="true" viewStateEncryptionMode="Always">

我甚至将以下内容(由机器密钥生成器生成)添加到machine.config并仍然在我的测试服务器上加密viewstate:

<machineKey validationKey="002..." decryptionKey="D90E..." validation="SHA1" decryption="AES" />

我的非测试环境似乎没有获得上述更改,因为我始终可以使用上述设置将viewstate解码为纯文本.在做出任何改变之后,我总是感到不安.

有关我的非测试网络服务器的一些信息:

  • Web场/负载均衡(但现在只有一台服务器用于测试)
  • Sql会话状态(最初需要machine.config中的machinekey来设置它)
  • machine.config:deployment retail ="true"

任何人都可以建议在哪里寻找可能会干扰asp.net viewstate加密的其他设置?

编辑:现在在我的iis测试服务器上我无法撤消viewStateEncryptionMode设置,因为它正在加密视图状态,即使我将其设置为"从不"并且我的其他网站似乎都没有抓住此设置.我在哪里可以看到这个属性被覆盖的地方?是否存在需要清除此设置的缓存,除了iisreset/stop www service/touch machine.config时要执行的操作?

编辑决赛:经过几天研究配置文件后,我放弃并通过代码实现了这一点.我已经有一个附加到页面事件的安全模块,所以在Page_Load中我添加了:Page.RegisterRequiresViewStateEncryption();

我真的很想知道是什么阻止了这个设置被IIS6 immediatley选中.当我在本地运行cassini时,如果我通过pages节点将viewStateEncryptionMode设置为"Always",我会立即看到它对viewstate进行编码并使用id ="__ VIEWSTATEENCRYPTED"渲染其他隐藏字段.当我将其设置为"从不"时,我会立即看到加密关闭.如果我对我的IIS6托管网站上的网站进行了相同的更改,它将立即生效,但如果我允许设置保留在那里,它最终会占用.我会停止/启动www服务,重置iis,清除ASPNET临时缓存,但我不知道还有什么可以尝试?希望这篇文章可以ROT一段时间,将来有人会看到我所经历的相同行为,我们可以进一步弄清楚这一点!

asp.net encryption viewstate base64 machinekey

19
推荐指数
1
解决办法
4468
查看次数