当前位置:编程学习 > C#/ASP.NET >>

IIS 404错误 导致的乱码问题

因为程序需要,所以需要设置IIS的404到一个特定的aspx页面,这个页面会对出现404的请求页面进行分析,可是发现一旦出现了中文,就会出现乱码,而且现在已经确定,这个乱码只在IIS6(win2003)上面出现,使用IIS7(win7)是不会出现这个问题的。

http://www.mysite.net:80/target.aspx?404;http://www.mysite.net:80/cdm/fenlei/0/80/乱码在此/

大家知道,只要404过来,target.aspx页面就会接受到这样的url,而我们只需要分析分号后面的url,就知道用户是请求哪个不存在的资源了, 我想这应该是IIS版本导致的问题,不知道可以不可以通过设置来解决,另外,我也尝试过去decode那段乱码,可是不管是utf-8和gb2312,都无法decode,应该是设置问题了,请知道的朋友帮忙

发了个贴在IIS区,没有人看,

http://bbs.csdn.net/topics/390358009 iis url --------------------编程问答-------------------- 没遇到过,帮顶下 --------------------编程问答-------------------- 帮顶! --------------------编程问答-------------------- 我也没遇到过。希望你能快点解决。 --------------------编程问答-------------------- http://bbs.csdn.net/topics/260083852
看看有帮助没? --------------------编程问答-------------------- 严重怀疑是LZ的哪个小地方没注意到引起的。 --------------------编程问答-------------------- --------------------编程问答-------------------- 是不是没有配置对呀。呵呵。 --------------------编程问答-------------------- 感觉还是配置问题哇 --------------------编程问答-------------------- 自己觉得,应该是IIS本身的问题,不应该是程序配置,程序默认编码UTF-8,如果是程序配置,不应该在win7和win2003上表现不一样 --------------------编程问答-------------------- 自己顶一下,没有人了呢 --------------------编程问答--------------------
引用 9 楼 leonbingo 的回复:
自己觉得,应该是IIS本身的问题,不应该是程序配置,程序默认编码UTF-8,如果是程序配置,不应该在win7和win2003上表现不一样

我看不是IIS问题。你若怀疑是IIS问题,站点不多的话,你可以重新安装一次。
再则,一些编辑器引用也能造成类似问题,我就遇到过。你在IIS开一个简单的站,一个页面,和几个403、404错误页面,你设置下,访问看看,这个最能排除问题了。
不应该在win7和win2003上表现不一样
我那时也是在不同操作系统下遇到不同结果,最终结果是换了个编辑器问题解决了,希望对你有用。 --------------------编程问答--------------------
引用 楼主 leonbingo 的回复:
http://www.mysite.net:80/target.aspx?404;http://www.mysite.net:80/cdm/fenlei/0/80/乱码在此/

?404;
有可能是分号在II7和II6有不同的解释. 或者你的ii6上面安装过滤器了(比如说防止恶意攻击的的 urlscan)
你能不能向办法不要用分号,比如把
target.aspx?404;http://www.mysite.net:80/cdm/fenlei/0/80/乱码在此/
改成
target.aspx?404=http://www.mysite.net:80/cdm/fenlei/0/80/乱码在此/


--------------------编程问答-------------------- http://blogs.iis.net/nazim/archive/2009/12/29/public-disclosure-of-iis-security-issue-with-semi-colons-in-url.aspx

你看看这个资料 --------------------编程问答-------------------- 你在win7用的是32位的 还是64位的。

win2003是多少位的。

在页面里出现中文一般都会乱码的。
你可以使用参数形式加密解密
设置页面编码在Action可以通过

Encoding utf8 = Encoding.UTF8;
        //首先用utf-8进行解码                    
        string code = HttpUtility.UrlDecode(str.ToUpper(), utf8);
        //将已经解码的字符再次进行编码.
        string encode = HttpUtility.UrlEncode(code, utf8).ToUpper(); 

解决,多个页面上述方法大大地不可取,其实在Web.config里面设置一个就可以,具体操作如下:

在 system.web 节点下添加 globalization 元素设置 requestEncoding和responseEncoding为 gb2312。

  <system.web>
    <globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
  </system.web>
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,