IISExpress配置文件的一个坑
现象:
昨天在处理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配置文件
ASP.NET MVC IISExpress配置文件的一个坑 现象: 昨天在处理PBS系统问题的时候意外发现两个js错误(而同样的代码在同事机器上都没有问题),如下图. 图1 图2 图3 原因分析: ...
- CentOS 7下升级MySQL5.7.23的一个坑
发现CentOS 7下升级MySQL5.7.23的一个坑,以前面升级到MySQL 5.7.23的一个集群为例 在我们环境下打开文件描述符个数的参数open_files_limit在MySQL 5.6. ...
- 用html5的视频元素所遇到的第一个坑
html5 有一个video标签,这个是被大家所熟知的事情.按照w3c的规范,我认真的写出如下代码: <video preload="auto" controls=" ...
- 监控jvm的一个坑
监控jvm的一个坑 1,遇到的问题 我按照以往文档,在catalina.sh里追加jvm的监控api,如下 紧接着我启动 tomcat. 未报任何错误. 发现 lsof –i:12000, 12000 ...
- JavaScript中sort方法的一个坑(leetcode 179. Largest Number)
在做 Largest Number 这道题之前,我对 sort 方法的用法是非常自信的.我很清楚不传比较因子的排序会根据元素字典序(字符串的UNICODE码位点)来排,如果要根据大小排序,需要传入一个 ...
- PHP中逻辑运算符and/or与||/&&的一个坑
我原来以为PHP中的and和&&是一样的, 只是写法上为了可读性和美观, 事实上我错了. 这里面深藏了一个坑! 看以下代码: $bA = true; $bB = false; $b1 ...
- 困扰多日的C#调用Haskell问题竟然是Windows的一个坑
最近一直被C#调用Haskell时的“尝试读取或写入受保护的内存”问题所困扰(详见C#调用haskell遭遇Attempted to read or write protected memory,C# ...
- 在VS2012中GridView的一个坑
使用GridView的时候遇到了一个坑,一个增加一个选择按钮~貌似在某些情况下会出现一个是否允许选择的属性,貌似会默认为fals,然后就返回不了指定ID!坑,巨坑!但是今天居然找不到这个属性了,难道是 ...
- 【转载】linux命令行计算器bc的一个“坑”
[转载自]http://blog.chinaunix.net/uid-174325-id-3518953.html 结论:ibase,obase可以使用在不同的计算公式里,但是尽量把obase放iba ...
随机推荐
- 利用PinYin4j 实现List中的对象按数字,字母, 汉字排序
要排序的对象: import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPi ...
- JS完成改变新闻字体大中小的显示
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- FileCopy
/*[入]指的是到内存里,[出]指的是到内存外*/ import java.io.*; public class MyReadFile{ public static void main(String[ ...
- python 将页面保存为word
将博客或者留言页面保存为word文档 -----------2016-5-11 14:40:04-- source:http://blog.csdn.net/how8586/article/detai ...
- odoo关联表查询方法
testinfo=self.env['product.attribute.value'].search([('product_ids.product_tmpl_id','=',2047)]) for ...
- Spring对Hibernate事务管理
谈Spring事务管理之前我们想一下在我们不用Spring的时候,在Hibernate中我们是怎么进行数据操作的.在Hibernate中 我们每次进行一个操作的的时候我们都是要先开启事务,然后进行数据 ...
- Android中的启动模式(下)
在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的入门篇Android的启动模式(上 ...
- Maven——聚合与继承
原文:http://www.cnblogs.com/xdp-gacl/p/4058008.html 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 ...
- OpenGL的glOrtho平行投影函数详解[转]
glortho函数可以将当前的可视空间设置为正投影空间.基参数的意义如图,如果绘制的图空间本身就是二维的,可以使gluOrtho2D.他的使用类似于glOrtho 原型是: void glOrtho( ...
- EMV技术学习和研究(转)
刚开始学习EMV&PBOC,磕磕碰碰,感谢xuture的<EMV技术学习和研究>给了很大帮助,让我少走了很多弯路,也感谢广俊.surge.艾零.小SO.Spinach.龙行天下的帮 ...