母版页无法在内容页上正确显示

1.现象:
[放母版页出错图]
此现象只影响IDE开发设计时,对项目实例运行无影响.
2.重现过程

使用iis express 在本机上做练习时,发现 母版页无法在内容页上正确显示.
但是当你先以设计模式查看 母版页后,再打开内容页又能正常显示.
经过重现,确认如果直接打开内容页,则会发生此现象.

3.可能导致的原因:
在这里插入图片描述
当你将asp.net webform项目 发布为 虚拟目录方式时,就会导致这个现象的发生,但我目前不确定这是不是IDE Visual Studio的一个Bug?
4.详细描述
我有一个解决方案,有前后台,但都是写在同一个webform项目上, 原后台 相对目录为 Admin.
重现所使用的项目结构
前不久,将其拆为前台,后台各放在一个webform目录上,为了保持原有习惯,所以将后台的web项目设置web项目为 http://localhost:2001/admin.
但未注意后台项目中内容页是否正常,前几天修bug时,打开页面一看,母版页出现了错误, 用最小法,创建了新的母版页与内容页,现象相同.
检查项目错误列表及输出, 没有有用的相关提示. 决心利用版本管理系统,定位问题点.
经过几天的仔细查找.发现只要 web配置中, 项目url配置带有虚拟目录形式,就会出现此现象.
5.解决办法
方法1:
在这里插入图片描述
因为只是本机开发,所以即使不配置为虚拟目录,一样也不影响使用,重新定义一个无关的url即可.
此方法前后台在足够分离时,运行与使用没有任何问题.
但如果后台有些文件是路径依赖了前台项目时,本地就没法实现这个布署方式.
方法2(完美解决) :
在这里插入图片描述
原来配置的 项目Url(IISUrl)
仔细查看,发现还有两个选项:
重写应用程序根url(OverrideIISAppRootUrl)
应用程序根(IISAppRootUrl)
一直不清楚它们用法,网上google也没找到确切的用法.
但经过不断的摸索. 发现, IISUrl可以配置为 虚拟目录形式
但在勾下 OverrideIISAppRootUrl后(如果IISAppRootUrl仍是灰色,按ctrl+shift+s保存后,取消它再勾回,就可以修改了),将IISAppRootUrl 设置一个单独和有效的 非虚拟目录形式.

 <IISUrl>http://localhost:2011/admin</IISUrl>
 <OverrideIISAppRootUrl>True</OverrideIISAppRootUrl>
 <IISAppRootUrl>http://localhost:2012/</IISAppRootUrl>

将解决方案设置为多项目启动,将前台后台项目均配置为启动
在这里插入图片描述
在这里插入图片描述

按f5,启动,可以看到, 前台,后台均以你期待的方式运行

在这里插入图片描述
尝试访问 IISAppRootUrl的地址http://localhost:2012/,也能成功访问后台.
在这里插入图片描述
在IDE设计下,关闭再重新打开带母版页的内容页, 已能够正常显示.
在这里插入图片描述
且iis express 配置文件内容如下:
在这里插入图片描述

6.知识点提要
aspnet webform,
iis express
版本管理(git,tfvs)
母版页(master),内容页
多项目启动
项目配置文件 app2.csproj
项目–>属性–>web–>项目URL, 覆盖应用程序根URL, 应用程序根
虚拟目录
iis express 启动文件 .vs/app2/applicationhost.config

如何查找到iis express配置文件
在这里插入图片描述
在这里插入图片描述
提示:

  • 如果多人开发,且各人环境不一致时, app2.user 不放入版本管理
  • .vs/app2/applicationhost.config 因为内含有项目的物理绝对路径,所以不建议 放入版本管理

7.其它
精确重现这个bug,可谓经历困难重重,由于一直都有用版本管理,所以通过不断回退历史版本,大致找到了稳定重现的两次变更集之间.
再通过试错关键变更集上的文件,找到了关键的文件,为 后台.csproj文件(之前项目开发形成了个好习惯,每项任务要再细分阶段,尽量少量快跑式的签入方式,让排查文件工作量变得不是非常的大,这个优秀的好习惯又一次帮助了我).
再通过试错定位到了 关键语句上 <IISUrl>http://localhost:2011/admin</IISUrl>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值