程序发布时大部分网页能打开,但远程打开reportviewer的网页出现:
未预编译文件“/default.aspx”,因此不能请求该文件。
从网上查找了各种原因,通用的解决方法是:
今天我们公司的网站,突然打不开了,进入服务器看了下,详细错误信息,显示“未预编译文件“/Index.aspx”,因此不能请求该文件”的错误,在网上查了下,说是有很多的原因,根本就不是那些问题,后来通过多次尝试,终于解决,现将网上的方法,以及我解决的方法总结如下。
1.未对项目进行引用或者控件未注册,丢失对相应DLL文件的引用。
2.DLL文件本身问题
这是网上的解决方法,总之就是缺少部分编译后的文件,未Publish部分文件。
这个时候你就要检查在发布的时候有没有发布成功,有没有错误信息,如有错误,肯定是你的原代码有问题。
我的问题是,我在更新网站时,只更新DLL文件,没有全部更新,以前我在发布的时候,没有勾选“允许更新此预编译站点”这个选项,但是这次,我勾选了,这两种发布方式的区别想必大家都知道,却没有把相应的aspx,ashx等文件更新,从而导致了这个错误。找到了问题症结所在,就好解决了,重新发布,不要勾选“允许更新此预编译站点”,将DLL更新都服务器就好了,问题解决。
---------------------------------------
后来通过http://www.cnblogs.com/jintan/archive/2008/06/12/1218079.html解决
Reporting Services的确是个不错的东西,特别是VS2008下更显得完美了,而且ASP.net下的ReportViewer也支持打印的功能了,上个版本是不直接支持的。
关于如何使用RS的文章,aspnetx老大翻译的这篇文章不错。只是在部署上遇到了一些麻烦,特别是对中文支持上,下面谈谈几种解决方案。
VS 2005下的部署实际已经很简单了。
1.安装ReportViewer.exe,或者直接下载Microsoft Report Viewer Redistributable 2005 SP1 (完全安装) 安装。
2.再去MS网站下载语言包(ReportViewerLP.exe),在服务器上安装就可以了。
VS2008下ReportViewer的部署:
1.下载Microsoft Report Viewer Redistributable 2008(2.8 MB)在服务器上安装。
2.由于MS官方网站没有提供VS2008 ReportViewer的语言包下载,所以就只能靠自己了。
需要两个dll:
Microsoft.ReportViewer.WebForms.resources.dll
Microsoft.ReportViewer.Common.resources.dll
如果是Winform使用ReportViewer,则需要Microsoft.ReportViewer.WinForms.resources.dll
这几个dll实际上是资源文件编译成的dll,然后复制到运行ReportViewer 的网站下的的bin目录,就可以了,
或者可以加到GAC中,这样就不需要每个网站的bin下都复制这几个dll.
关于获取这几个dll?如果安装了Vs 2008的机器上都会有的,最直接的办法就是在C:\WINDOWS\assembly下可以看到
直接用命令: xcopy C:\WINDOWS\assembly\GAC_msil c:\GAC_MSIL /E /c
可以复制所有GAC_msil 下的所有dll
另一种解决方案:英文操作系统下Report Viewer控件客户端工具栏中文的解决办法
应用这个方案可以自定义toolbar上的信息,但是需要设置当前的Culture为zh_CN
-------------------------------------------------------------------------------------------------------
上面是网上的查找的解决方法,我服务器上本来安装了reportviewer控件,以为不是reportviewer控件的事,后来采用上面的链接重新下载了一版进行安装,问题解决。