IISExpress配置文件
ASP.NET MVC
现象:
昨天在处理PBS系统问题的时候意外发现两个js错误(而同样的代码在同事机器上都没有问题),如下图。
图1
图2
图3
原因分析:
初步看起来是因为页面上没有id为'form1'的form和id为‘MainContent_rblIsAdProduct_0’的radiobutton,那它实际生成的id是什么呢?为了确认,我查看页面的源代码,发现生成的id如下图。
图4
masterpage中的id为'form1',生成HTML后变成了'aspnetForm'。
图5
内容页中的id为'MainContent_rblIsAdProduct_0'加了前缀'ctl00_'。
通过源代码的分析,看起来像asp.net 3.5或更早版本的行为(给服务器端控件生成唯一客户端ID),因为从asp.net 4.0版本开始已经默认不加前缀了,而我本机的.net framework就是4.0版本的,项目站点指定的也是.net framework 4.0,那为什么看起来还是asp.net 3.5的效果呢?
首先查看项目(PackageFH.Offline.Site)使用的.net framework框架版本,发现使用的是.net framework 4的版本,所以项目使用的.net framework版本没有问题,也就排除了项目使用框架版本不正常的怀疑。
联想到在同事的开发机器上浏览起来都正常,唯独在我的机器上报错,所以很有可能是某个地方的配置不对,首先我想到会不会是IISExpress的配置问题,为了快速验证,我拿同事机器上IISExpress的配置文件过来替换,再次运行错误果然不见了,所以验证了是因为IISExpress的配置导致了这个问题。
既然确定了是因为IISExpress的配置导致的,那就要确定到底是那一个点导致的,经过反复比对和验证,最后发现是由applicationhost.config中site节点下根目录('/')的配置导致的,因为我的机器根目录指向的是一个使用asp.net 3.5框架的站点,如图6,而这个站点下的web.config指定了controlRenderingCompatibilityVersion属性使用asp.net 3.5版本,如图7。
图6
图7
解决方案:
既然找到了问题的根本原因,那么解决方法就很简单了。将IISExpress下site的根目录指定为%IIS_SITES_HOME%或一个已存在的目录(如果目录中存在web.config,需要去掉controlRenderingCompatibilityVersion和clientIDMode),使用asp.net 4.0框架默认配置既可,如图8。
图8
注:site节点的根目录相当于IIS中的站点根目录,而application相当于应用程序(也可以是虚拟目录),如果站点根目录下有web.config文件,那么整个站点都会应用这个配置,所以site的根目录最好不要有web.config文件。
参考文章:
1,StackOverFlow中的解释:http://stackoverflow.com/questions/4437717/asp-net-2-5-prefixing-ctl00-and-asp-net-4-not-prefixing-ctl00
IISExpress配置文件的更多相关文章
- IISExpress配置文件的一个坑
现象: 昨天在处理PBS系统问题的时候意外发现两个js错误(而同样的代码在同事机器上都没有问题),如下图. 图1 图2 图3 原因分析: 初步看起来是因为页面上没有id为'form1'的form和id ...
- IISExpress实现外部访问
首先修改IISExpress配置文件 \IISExpress\config\applicationhost.config 在website中添加一个binding <binding protoc ...
- IISExpress 开放局域网访问
1. 设置 IISExpress 配置文件 applicationhost.config VS2015 :这个配置文件 在工程目录下的 .vs/config 隐藏目录 其他版本 :在用户目录中的 II ...
- 【Net】CEF浏览IISExpress运行Web项目
前言 本文介绍在Winform桌面应用中,使用IISExpress做Host主机,启动.Net平台的Web项目. 浏览Web网页使用CEF开源组件. 准备 首先创建Winform项目WinFormII ...
- IISExpress Log 文件路径
问题 用VS做开发时经常用IISExpress测试web程序,那么在测试过程中生成的Log文件放在哪里了? 答案 情况1 默认情况下 applicationhost.config 文中定义了连个日志文 ...
- Asp.Net 配置IISExpress允许外部访问
1.找到IISExpress的配置文件,或位于(文档/IISExpress/config)文件夹下,打开applicationhost.config,找到如下代码:<site name=&quo ...
- 配置IISExpress允许外部访问
1.找到IISExpress的配置文件,位于 <文档>/IISExpress/config文件夹下,打开applicationhost.config,找到如下代码: <site na ...
- ASP.NET下使用xml反序列化、缓存实现个性化配置文件的实时生效
因为一些配置属性比较多,存在多组属性,因此结合xml解析.缓存技术,实现配置文化的自动解析.存入缓存.缓存依赖实时更新配置内容. 配置文件反序列化存入缓存的核心方法: public Class.Set ...
- 来吧学学.Net Core之项目文件简介及配置文件与IOC的使用
序言 在当前编程语言蓬勃发展与竞争的时期,对于我们.net从业者来说,.Net Core是风头正紧,势不可挡的.芸芸口水之中,不学习使用Core,你的圈内处境或许会渐渐的被边缘化.所以我们还是抽出一点 ...
随机推荐
- iOS 执行ScrollView在空白空间-解
iOS7 中间UIViewControllers配置automaticallyAdjustsScrollViewInsets.假设YES.scrollview它会根据status bar, navig ...
- Android 在非主线程无法操作UI意识
Android在应用显示Dialog是一个非常easy事儿,但我从来没有尝试过Service里面展示Dialog. 经验UI操作要在主线程,本地的服务Service是主线程里没错,可是远程servic ...
- Xenomai 3 和 PREEMPT_RT 有哪些优势相比,
Q: 我可以在我的开发板PREEMPT_RT直接在内核环境中执行POSIX应用, 使用Xenomai3 这是什么原因它? A:假设你的应用程序已经完全是POSIX,而且性能也满足,则,而且也没有理由去 ...
- (二)给IE6-IE9中的input添加HTML5新属性-placeholder
同样是最近遇到的一个小问题.因为IE9以下input是不支持placeholder属性的.在网上找到了解决方案,果断带走.正如鲁迅先生所说的‘拿来主义’:运用脑髓,放出眼光,自己来拿!感谢.借花献佛在 ...
- UVA 193 Graph Coloring 图染色 DFS 数据
题意:图上的点染色,给出的边的两个点不能都染成黑色,问最多可以染多少黑色. 很水的一题,用dfs回溯即可.先判断和当前点相连的点是否染成黑色,看这一点是否能染黑色,能染色就分染成黑色和白色两种情况递归 ...
- CODE - TSQL convert Query to JSON
原文 ODE - TSQL convert Query to JSON TSQL - Query to JSON It is my philosophy that good development s ...
- AngularJS html5Mode 使用 SVG Marker失效
接上一篇文章: 问题: 解决了html5Mode的路由问题之后,今天突然发现一个奇怪的问题:项目中使用SVG所画的箭头全都不见了?反复测试之后发现Chrome和Firefox有问题,而IE却可以显示, ...
- android使用ffmpeg
cygwin上文编译文章. 在ffmpeg/arm添加的文件夹Android.mk 的主要目的是为了宣布动态库libs下一个 LOCAL_PATH:= $(call my-dir) include $ ...
- python fabric远程操作和部署
博客迁往:新地址(点击直达) 新博客使用markdown维护,线下有版本号库,自己写的所以会定时更新同步.同一时候提供更好的导航和阅读体验 csdn对markdown支持不好.所以旧版不会花时间进行同 ...
- [cocos2dx注意事项009]试用quick-cocos2dx-2.2.4
quick-cocos2d-x 在中国站http://quick.cocoachina.com/?page_id=40,用他们自己的话说:quick-cocos2d-x(后文简称 quick)与 co ...