HttpContext.Current 请求错误,在安装Microsoft VM的IE下

最近遇到一个很莫名的问题:

在请求的地址的参数中的中文值为奇数时,外部引用样式、图片和iframe全部出错!!
比如:http://xxx.xxx.com/xx.aspx?key=写字楼

但在中文值为偶数时又一切正常。 比如:http://xxx.xxx.com/xx.aspx?key= 写字

 

 

 

条件是在IE安装了Microsoft VM的情况下,即在internet选项里的高级出现“ Microsoft VM ”选项的IE才会出现这个问题; 其他IE和FF等浏览器没有这个问题。

站点是配置在WINDOWS2008的IIS7上的,池使用的是经典模式。

 

在这个情况下整个页面错乱,样式丢失,图片不存在,IFRAME出现505内部服务器错误,不堪目睹。


后来调整为集成模式,效果有所改善:外部引用样式效果可以了,本站点的图片也出来了,但外部站点的图片仍是不行,IFRAME出现错误提示:

在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (异常来自 HRESULT:0x80070459)

 

“/”应用程序中的服务器错误。

在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (异常来自 HRESULT:0x80070459)

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentOutOfRangeException: 在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。 (异常来自 HRESULT:0x80070459)

源错误:

行 30:                 //Context.Response.Write(Context.Request.Headers);
行 31: //Context.Response.End();
行 32: CurrentUrl = Context.Request.Url.OriginalString.Replace(":80/", "/").ToLower();
行 33: //}
行 34: //catch { return; }

 

 

 

 

调试时发现在HttpContext Context =  HttpContext.Current;时就出错了,整个 Context对象错误。

这是在application.BeginRequest事件时的一个方法,在访问当前页时没问题,但在本页的其他引用(图片、IFRAME引用时)就出现错误了,几乎是 Context 对象错误

 

 

既然这个对象出错,就TRY一下:

try
            {
                Context = HttpContext.Current;

                //Context.Response.Write(Context.Request.Headers);
                //Context.Response.End();
                CurrentUrl = Context.Request.Url.OriginalString.Replace(":80/", "/").ToLower();
            }
            catch { return; }

 

 

这样本站的图片、样式和IFRAME在IIS7的集成模式下,可以成功访问了,但外部站点的图片仍是无法显示。

当然即使代码加上TRY在集成模式下可以的,一切换成经典仍是样式、图片、IFRAME无法正常显示,一样的错误。

 

 

不知道其他朋友有没有遇到过这个问题。

 

 

这个错误,不论是经典还是集成模式,只有 装了 Microsoft VM的IE 才会出现,

其他IE6/7/8及FF都是可以正常访问的。


 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值