这件事让我很烦恼。我正在尝试将一些旧应用程序迁移到新服务器,但是在代码中到处都有
在你说之前,我知道不要使用
我的主要困惑是,当我在同一浏览器中测试当前版本的应用程序时,它可以工作。这只是一个直接复制和粘贴的工作,迁移期间没有更改任何代码,但是当我在新服务器上运行应用程序时,
IIS或更新的.NET框架是否以某种方式不同地处理客户端脚本?
我来自托管在Windows Server 2005上的.NET 2.0,然后转移到托管在Windows Server 2012上的.NET 4.0。
我正在寻找任何关于为什么在同一浏览器中测试时这些行为会有所不同的想法。
更新: 被
document.all
,导致出现了很多问题。在你说之前,我知道不要使用
document.all
。它确实存在,并且我无能为力...这个特定的问题涉及到嵌入在程序集中的JavaScript,而我没有源代码,并且没有重新开发的权限。我的主要困惑是,当我在同一浏览器中测试当前版本的应用程序时,它可以工作。这只是一个直接复制和粘贴的工作,迁移期间没有更改任何代码,但是当我在新服务器上运行应用程序时,
document.all(element)
总是返回null。IIS或更新的.NET框架是否以某种方式不同地处理客户端脚本?
我来自托管在Windows Server 2005上的.NET 2.0,然后转移到托管在Windows Server 2012上的.NET 4.0。
我正在寻找任何关于为什么在同一浏览器中测试时这些行为会有所不同的想法。
更新: 被
document.all
定位的用户控件正在编码,这会破坏控件的ID,即应该是'elementId'
的输出为'elementId'
程序集中的代码正在使用Attributes.Add,其中包括单引号。我已经找到了很多建议添加新类的来源:public class HtmlAttributeEncodingNot : System.Web.Util.HttpEncoder
{
protected override void HtmlAttributeEncode(string value, System.IO.TextWriter output)
{
output.Write(value);
}
}
现在有一种新的编码方法可以通过在web.config中使用<httpRuntime encoderType="HtmlAttributeEncodingNot"/>
来关闭编码,但是我无法在这个项目中添加新类。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
。 - McFixit<xhtmlConformance mode="Legacy"/>
标签,并且没有验证控件存在。 - McFixit