随机“virtualPath”错误 - Asp.Net应用程序

时间:2008-12-10 16:23:42

标签: asp.net internationalization

完整错误是 - “值不能为空。参数名称:virtualPath”。这发生在我们的QA和培训环境(Win 2003 Server& IIS6)中,但当然无法在调试器中进行重新创建。更糟糕的是,尽管有一个合理的全局错误处理程序,但没有堆栈跟踪伴随错误,并且没有任何内容写入事件日志。该应用程序是一个在2.0 Framework下运行的大型全球化Asp.Net(VB)Web应用程序。它使用通常的“App_LocalResources”结构来获取resx文件,并且迄今为止表现相当不错。应用程序中有几个地方使用了这样的代码:

Dim x As New Compilation.ExpressionBuilderContext(Control.TemplateControl)  
Dim path As String = x.VirtualPath  
Dim res As String = HttpContext.GetLocalResourceObject(path, resourceKey).ToString  

然而,当我强制“path”变量为空时,围绕此代码的Try / Catch块正常工作。我们还在数据网格列标题处使用此语法:

<asp:TemplateColumn HeaderText="<%$ Resources:resHeader %>" >  

我们还使用了大量的Ajax,并不断地将ascx控件动态加载到占位符中。如果有人对此有任何见解,我将非常感谢您的帮助。

谢谢,拉里

2 个答案:

答案 0 :(得分:1)

跟进 - 确保您的服务器达到适当的补丁级别 其根本原因是3个QA虚拟机没有 2.0 .Net Framework SP1已安装。

答案 1 :(得分:0)

这可能听起来很傻,但是我以前曾经发生过这件事。

如果您复制并粘贴了错误,我会注意到它显示为“virtualPath”(小写v);在示例代码中,您使用的属性具有VirtualPath(大写V)。

另外,你得到的实际例外是什么?一个NullReferenceException?