asp.net之treeview无法显示树结点图标(IP与域名的表现竟不一样)

简介:
  • 背景
 
今天接到客户的电话,说部署上去的项目树型的treeview无法正常显示,显示成了好几个大红叉。如:
  • 排查
 
于是我通过远程登录到服务器,在本地测试了一会发现没有这个问题存在,无论是通过IP地址、localhost或是127.0.0.1,treeview的图标都是可以正常访问的。
 
后来尝试了用域名的形式访问,就发现treeview的图标无法显示,而是以无法找到资源的大红叉代替。
 
在这里,就出现了这样的问题:在服务器部署成功,测试没问题时,通过域名的映射竟然会有所不同?
 
于是,打开查看源文件,发现treeview的图标是以
<a href="javascript:__doPostBack('OrgTree','tone0\\101')"><img src="/WebResource.axd?d=lGGrcXYTVjltmmHcco2Supo9tdUu0f434OBzmrYsJsNC93G2SEJwl0IBbEihwwiH91wr0uCxBKlHULSLKzmwe13uuDGp-nUJ0ydYs4WjZR3g92sp0&amp;t=635083448141708196" alt="折叠 表格下载" style="border-width:0;" /></a>
 
类似以上形式存在的。于是就对比了一下,通过IP地址访问WebResource.axd请求的资源正常;而通过域名的形式访问WebResource.axd请求的资源出现错误:
 
 

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


远程服务器返回错误: (404) 未找到。

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

异常详细信息: System.Net.WebException: 远程服务器返回错误: (404) 未找到。

源错误: 

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪: 

[WebException: 远程服务器返回错误: (404) 未找到。]
   System.Net.HttpWebRequest.GetResponse() +5400333
   DC.Web.HttpCompress.CompressWebResource.CompressResource(HttpContext context) +402
   DC.Web.HttpCompress.HttpModule.context_EndRequest(Object sender, EventArgs e) +153
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75


版本信息: Microsoft .NET Framework 版本:2.0.50727.3649; ASP.NET 版本:2.0.50727.3657
 
 
  • 现场状况
为什么通过域名形式请求WebResource.axd资源会出现异常,从而导致treeview无法正常显示图标?
我分析如下:
1、应用系统使用了8080端口
2、客户的服务器内部网络,通过地址映射的形式nat到服务器的IP;
3、使用了二级域名对IP进行访问;
4、在ping域名得到的地址不是服务器实际的IP地址;
 
 
  • 猜想
有了以上的对现场状况的分析,我们可以推断以下结论或猜想:
1、可能网络应用安全网关的策略出了问题;
2、地址映射规则出了问题,导致通过域名访问资源时地址依然是没有映射前的IP;
3、微软通过WebResource.axd生成嵌入式资源的treeview图标的请求地址,大像攻击代码,被拦截了;
4、微软.net framework 2.0的bug的问题;
5、在启动网页压缩时出现问题如DC.Web.HttpCompress;
 
 
  • 解决方案
有了以上的分析结论或猜想,问题就不难解决了。
由于时间关系,也没有去深入研究,只认为既然WebResource.axd请求的资源有问题,那就不用微软提供的嵌入式资源吧,用自己的,我的资源我做主嘛;
 
于是添加了应用网站的主题,加入以下代码,问题就迎刃而解 :):
 
代码如下:
 
<asp:TreeView runat="server" ShowLines="True" LineImagesFolder="~/Images/Tree/" >
</asp:TreeView>
 
这里得注意一下,Tree目录上必须包括以下文件:
dashplus.gif、dashminus.gif、i.gif、l.gif、lminus.gif、lplus.gif、t.gif、tminus.gif、tplus.gif
 
 
 
  • 结论
1、不要过多的依赖微软,项目能不用WebResource就不用;
2、微软通过主题的思想,确实是了不起,避免了要修改N多个文件,只需要添加一个主题,指定默认主题即可;当然如果某一小菜,都在去掉主题并设置了treeview的属性,那也只能是杯具;
3、最近的苦水……,不说了。。。
转载请注明出处[ http://samlin.cnblogs.com/] 
作者赞赏
 


刚做的招标网: 八爪鱼招标网 请大家多意见
标签:  treeviewwebresource经验

本文转自Sam Lin博客博客园博客,原文链接:http://www.cnblogs.com/samlin/p/treeview-webresource-bug.html,如需转载请自行联系原作者
目录
相关文章
|
21天前
|
安全 网络协议 网络安全
只有IP地址没有域名,如何实现HTTPS访问?
在仅有IP地址而无域名的情况下,实现HTTPS访问并非不可能。主要挑战包括证书颁发机构(CA)对IP地址的支持有限及浏览器兼容性问题。解决方案有:1) 搭建私有CA为内部IP地址颁发证书;2) 使用支持IP地址的公共CA服务。选择合适的方案需根据需求权衡。具体步骤包括选择证书类型、生成CSR文件、提交并完成验证、安装SSL证书和配置强制HTTPS访问。确保IP地址稳定,并定期维护安全性。 **申请优惠**:访问JoySSL官网并填写注册码“230907”可优惠申请IP地址证书。
83 5
|
4月前
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
273 6
|
4月前
|
域名解析 网络协议 安全
反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性
在网络世界中,反向DNS解析是从IP地址到域名的映射,主要作用于验证和识别,提高通信来源的可信度和可追溯性。它在邮件服务器验证、网络安全等领域至关重要,帮助识别恶意行为,增强网络安全性。尽管存在配置错误等挑战,但正确管理下,反向DNS解析能显著提升网络环境的安全性和可靠性。
307 3
|
4月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
260 3
|
4月前
|
运维 监控 安全
在实际应用中,如何选择基于不同域名还是不同 IP 进行代理多服务的配置?
综上所述,在实际应用中选择基于不同域名还是不同 IP 进行代理多服务的配置,需要根据具体的业务需求、可扩展性、性能、安全性以及维护和管理成本等多方面因素进行综合考虑,权衡利弊,选择最适合自己系统架构和运营需求的配置方式。
|
10月前
|
缓存 网络协议 安全
【计算巢】DNS 解析过程详解:域名如何转换为 IP 地址
【5月更文挑战第31天】DNS(域名系统)将人类可读的域名转换为IP地址,涉及本地DNS缓存、层次化DNS服务器系统,包括根DNS、顶级域名DNS和权威DNS。当查询域名时,通过DNS服务器间的交互找到对应IP并返回给浏览器。Python示例展示了DNS查询过程。尽管DNS面临安全挑战,如欺骗和缓存中毒,采取安全措施可确保其稳定性和安全性。它是互联网的重要基础,连接域名与IP,支持便捷的网络访问。
333 0
|
4月前
|
安全 数据建模 测试技术
只有ip没有域名怎么申请SSL
在没有域名只有IP地址的情况下,仍可申请SSL证书。需确保拥有固定公网IP地址和服务器管理权限,选择支持IP SSL证书的CA(如JoySSL),完成注册、购买、验证、安装和测试等步骤,实现HTTPS加密访问。注意证书有效期、兼容性和安全性。
|
6月前
|
网络协议 安全
网络中IP地址与域名系统
网络中IP地址与域名系统
123 3
|
8月前
|
Linux 网络架构
通过route , tracert , traceroute 查看本地路由配置及访问ip或域名时经过的路由信息
通过route , tracert , traceroute 查看本地路由配置及访问ip或域名时经过的路由信息
1168 2
|
7月前
|
域名解析 缓存 负载均衡
在Linux中,自定义解析域名的时候,可以编辑哪个⽂件?是否可以⼀个ip对应多个域名?是否⼀个域名对应多个ip?
在Linux中,自定义解析域名的时候,可以编辑哪个⽂件?是否可以⼀个ip对应多个域名?是否⼀个域名对应多个ip?