首页 新闻 会员 周边

mvc视图的编译,是IIS编译的吗?为什么不能在发布时就编译完毕?!

0
悬赏园豆:40 [已解决问题] 解决于 2018-08-23 09:55


mvc视图的编译,是IIS编译的吗?为什么不能在发布时就编译完毕?!

        在视图里用@this.GetType().Assembly.Location可以看到在c盘里的一个文件夹里生产了一堆dll
一般是:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\1d712dc2\e3b29065\App_Web_cy3xeufi.dll
这显然,不是我用FTP上传的。

         阿里云说我的mvc网站,一个请求,CPU处理长达13428秒!这是他们IIS列队里的信息,我想了好久,考虑只有一种可能:(我的系统是直接与微信交互XML数据的)就是在我没有加载视图,直接返回字符串,(即没用浏览器,访问网站。)服务器在编译视图的时候,消耗了大量时间!!
我的另一个帖子,详尽描述了这个问题:http://bbs.csdn.net/topics/390872823
       mvc 按理说,网站在发布的时候,访问哪个控制器的方法,返回哪个视图,就可以确定了,为什么选择在第一次访问网站时,才去生成视图的dll呢?这不是加大了服务器的负担了吗?即使只生产一次!

钢的锅的主页 钢的锅 | 初学一级 | 园豆:10
提问于:2014-08-29 10:25
< >
分享
最佳答案
0

第一次的时候去生成dll是为了web应用的修改方便,比如,可能你只是修改一个很小的字符、布局,是否要重新发布呢?能在cshtml中直接就修改完成,多快?

至于你的要求,也不是不可以,通过vs的项目发布功能发布就可以达到目的。在配置发布的时候,有个选项:在发布期间预编译。你可以对每个CSHTML配置为单独的DLL,也可以所有的CSHTML配置为一个DLL,或由系统自定义。

只是这个发布,有时可能需要使用“删除已发布的项”。

收获园豆:20
519740105 | 大侠五级 |园豆:5810 | 2014-08-29 10:33

按你说的,发布了一下,可是在网页上看到的还是 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\1d712dc2\e3b29065\App_Web_cy3xeufi.dll  暂时不能确定是预编译的,预编译他的dll应该在bin目录下吧?

钢的锅 | 园豆:10 (初学一级) | 2014-08-29 19:07

@钢的锅: 你这个问题我还真没研究过是否会复制还是咋的。

但是,这样后,性能是否提升了?

519740105 | 园豆:5810 (大侠五级) | 2014-08-29 20:21
其他回答(1)
0

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\ 这个目录里是VS变异过程中产生的临时文件吧,我又一次编译时,系统蓝屏,之后一直报各种莫名其妙的DLL错误,后来查到,是编译过程中产生的临时文件未写完,导致下一次编译时出错,将这个目录中的文件都删掉,问题就解决。

 

至于 为什么会这么长时间,不太清除。

收获园豆:20
铁手三郎 | 园豆:311 (菜鸟二级) | 2014-08-29 22:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册