• 背景
 
今天接到客户的电话,说部署上去的项目树型的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、最近的苦水……,不说了。。。

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

  1. [置顶] ※数据结构※→☆非线性结构(tree)☆============树结点 链式存储结构(tree node list)(十四)

    结点: 包括一个数据元素及若干个指向其它子树的分支:例如,A,B,C,D等. 在数据结构的图形表示中,对于数据集合中的每一个数据元素用中间标有元素值的方框表示,一般称之为数据结点,简称结点. 在C语言 ...

  2. [LeetCode] Find Bottom Left Tree Value 寻找最左下树结点的值

    Given a binary tree, find the leftmost value in the last row of the tree. Example 1: Input: 2 / \ 1 ...

  3. 基于bootstrup treeview多级列表树插件

    <!doctype html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  4. Asp 解析 XML并分页显示

    Asp 解析 XML并分页显示 Asp 解析 XML并分页显示,演示样例源代码例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...

  5. C#上移,下移TreeView中的树节点顺序

    C#上移,下移TreeView中的树节点顺序 2009-08-12 20:10 1494人阅读 评论(2) 收藏 举报 c#buttonobjectnullstring C#中,通过单击上移,下移按钮 ...

  6. 动态更新Toolbar Menu以及Menu中同时显示文字和图标

    动态更新Toolbar Menu以及Menu中同时显示文字和图标 我们经常会有这样的需求,在切换Fragment或者点击某个按钮后动态更新Toolbar上Menu项.但是onCreateOptions ...

  7. favicon.ico显示,favicon显示,favicon图标显示

    favicon.ico显示,favicon显示,favicon图标显示 >>>>>>>>>>>>>>>> ...

  8. Windows Server 2012 R2在桌面上显示计算机/网络图标

    原文 Windows Server 2012 R2在桌面上显示计算机/网络图标 从Windows2012开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令调出.具体方法如下: ...

  9. Windows的任务管理器怎么显示进程的图标

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Windows的任务管理器怎么显示进程的图标.

随机推荐

  1. expect笔记

    #!/usr/bin/expect -f set ip [lindex $argv 0]; set password [lindex $argv 1];  set timeout 1 spawn ss ...

  2. MUI(2)

    本篇博文是继续MUI(1)博文. 上一篇博文小编写了两个页面,一个页面只写了一个头部导航栏,另一个页面写了一个按钮,然后这两个页面进行合并显示,即在头部导航栏页面加载显示另一个页面的按钮.仔细观察上一 ...

  3. 2015暑假多校联合---Problem Killer(暴力)

    原题链接 Problem Description You are a "Problem Killer", you want to solve many problems. Now ...

  4. 2005年IT行业趋势Top10

    未来三年内对组织有潜在的重大影响IT趋势.这里的IT趋势的摘要: 1. 计算位于任何地方 智能手机,平板,电视盒,可穿戴设备,可连接的屏幕,对于适应移动用户所求要的整体环境的需求在不断增强.这会继续提 ...

  5. 跨平台日志清理工具 Log-Cutter v1.0.3 正式发布

    Log-Cutter 是JessMA开源组织开发的一个简单实用的日志切割清理工具.对于服务器的日常维护来说,日志清理是非常重要的事情,如果残留日志过多则严重浪费磁盘空间同时影响服务的性能.如果用手工方 ...

  6. GJM :FPSCalc-简单FPS观测类 [转载]

    版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! FPSCalc--简单FPS观测类 利用Unity做的手游项目很多时候要保证流畅度,流畅度最直 ...

  7. spring mvc+ELK从头开始搭建日志平台

    最近由于之前协助前公司做了点力所能及的事情,居然收到了一份贵重的端午礼物,是给我女儿的一个乐高积木,整个有7大包物件,我花了接近一天的时间一砖一瓦的组织起来,虽然很辛苦但是能够从过程中体验到乐趣.这次 ...

  8. Converse.js – 开源的 XMPP 聊天客户端

    Converse.js 是一个运行在浏览器的免费和开源的聊天客户端.它可以集成到任何网页.类似于 Facebook 的聊天,它也支持多用户聊天室.Converse.js 可以连接到任何可访问的 XMP ...

  9. Windows安装apache2.4

    The primary Windows platform for running Apache 2.4 is Windows 2000 or later. Always obtain and inst ...

  10. 从零开始,做一个NodeJS博客(三):API实现-加载网易云音乐听歌排行

    标签: NodeJS 0 研究了一天,翻遍了GitHub上各种网易云API库,也没有找到我想要的听歌排行API,可能这功能比较小众吧.但收获也不是没有,在 这里 明白了云音乐API加密的凶险,我等蒟蒻 ...