问题描述
在发布网站时,发现上线的网站总是功能缺失,而本地代码确实没问题。
到发布网站的磁盘去查看,发现丢失了很多静态页面文件。
这是一个很奇怪的问题:mvc的网站,丢失了很多View(大部分的cshtml文件都发布成功了,只有少数部分发布失败)。
手动将所有view全部覆盖一遍,发现网站可以正常运行了……
这是什么原因呢?为什么发布会遗漏部分静态文件呢?
解决方案
在vs中查看这些遗漏的和发布成功的文件属性,对比一下发现
发布成功的文件,属性中【生成操作】选中了【内容】选项,而失败的文件则是【无】。
修改了这些属性我在此尝试发布,真的成功了。
追究原因
为什么这些文件会没有这些属性呢?
回想一下这些文件被加入到工程的操作,我发现(在我这个项目中),因为是多个分布视图,所以我只新建了一个分布视图,然后通过ctrl+c ctrl+v 复制了其他的视图(过程中后缀出现问题,修改过后缀),而发布结果刚好是通过vs新建的分布式图发布成功了,而复制的视图发布失败。
通过复制的视图,如果后缀被修改过(图中修改了视图后缀为.cshtml1),则会丢失这些属性信息。
在手动修改为正确的后缀之后 还要修改这些文件的【生成操作】属性。
后记
这本不该出现的问题,引出这么大的麻烦,不过研究得到最后的真知,也算是一种收获了。
小心驶得万年船,怪就怪自己不细心吧。