没有写博客的爱好,但是很多技术及经验都是从其他博主那里获得的,所以理性的认为即使懒惰也应抽出时间整理,总结自己遇得到的问题,然后帮助其他遇到同样问题的朋友们及时的解决问题。
下面我总结下我这个项目中的问题。
开发环境 Framework4.0, 服务器apache, 数据库server2000,报表rdlc,水晶报表
问题1:apache下能运行.net么?
这是理所当然的,apache对.net2.0运行的不错,之后的从看的资料来看apache在没有对.net的模块做更多的开发,因此,我开发的环境4.0是一个悲剧,幸好开发中用到4.0的模块很少,就把4.0的转成3.5了,因为2.0,3.0,3.5的内核都是2.0的,因此,apache还是能支持的了3.5的项目的,不过项目中的很多控件支持的不好,过程中控件不好用的也就挨个改了,所以还是建议大家在开发的时候尽量少用控件开发。
具体的apache下如何配置.net环境,各位自己可以查,根据系统是32位的,还是63位的,下个插件,还有另一个模块,最重要的就是apache的配置文件的修改。这里我贴出来
1 # asp.net 支持 2 # 这2条配置属于全局配置,可放在其它响应 LoadModule/AddHandler 语句块后面 3 # 我的配置中,下面整个配置块是放在最后,未分开,这也是为了方便管理 4 LoadModule aspdotnet_module "modules/mod_aspdotnet.so" 5 AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo 6 7 # 下面的整段配置可以放在虚拟主机中 8 <IfModule mod_aspdotnet.cpp> 9 10 # Mount the ASP.NET example application 11 # AspNetMount 语句相当于 Linux 中的 mount 命令,是把Asp程序目录挂载到一个 URL 地址 12 # 如果不是整个网站都用Asp,则不应该挂在‘/’下。如:AspNetMount /asptool "D:\\www\\Apache2\\htdocs\\aspweb" 13 # 注意:整站采用时,全局的DocumentRoot 为 "D:/www/Apache2/htdocs/aspweb" 14 AspNetMount / "C:/apache/htdocs" 15 16 # Map all requests for /active to the application files 17 # 意思是把所有到‘/asptool’的请求映射到挂载的Asp程序目录下 18 # 我的配置中,下面一句是注释掉的 19 # Alias /asptool "D:/www/Apache2/htdocs/aspweb" 20 21 # Allow asp.net scripts to be executed in the active example 22 <Directory "C:/Papache/htdocs"> 23 Options FollowSymlinks ExecCGI 24 Order allow,deny 25 Allow from all 26 DirectoryIndex default.htm default.aspx index.html index.aspx 27 </Directory> 28 # For all virtual ASP.NET webs, we need the aspnet_client files 29 # to serve the client-side helper scripts. 30 31 # 注意:下面两行需要对应.Net Framework安装的目录 32 AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/WIN2003/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4" 33 34 <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles"> 35 Options FollowSymlinks 36 Order allow,deny 37 Allow from all 38 </Directory> 39 40 </IfModule> 41 # asp.net 支持 End.
里面的路径问题各位自己参考吧。
问题2:水晶报表显示小红叉的问题,及rdlc不显示的问题
项目发布后,在IIS中测试,启用的父路径,项目运行的很正常。当迁移到apache中后,水晶报表显示小红叉,rdlc不显示。一直以为是路径的问题,因此网上翻了个便,适了N中方法,终于功夫不负有心人。让我解决了,那个心情爽啊。
先说水晶报表显示小红叉的问题,既然在IIS 中,或者Vs中测试没问题了,为何发布到服务器中就不行了呢,我的总结,多半是路径问题。没引用到。所以就依次为据,展开问题调查。
我用的水晶报表是2010 的,也是根据系统位数,装两个软件就OK了,当然web.config中会自动生成相关配置,应该是生成3部分关于水晶报表的配置模块。自动生成的,而且在vs或者IIS中一方运行成功的 ,就不是配置的问题了,就转移到路径的问题。但是在项目的根目录中一定加一个(CrystalImageHandler.aspx)的页面,这个页面是一个映射,没有它,不会生成图表。既然是路径的问题,在IIS下运行没事,在apache下运行不出来,我就用(ASP.Net探针)依次运行得出结果,路径不同,IIS启用了父路径,因此可以运行,apache路径缺少个文件名,因此引用不到。我在配置文件中将
<add verb="GET" path="../CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/> 中的path添加了"../-----",就OK了,也可以将apache的路径改成虚拟路径指向当前的网站也可以,如
1 Alias /虚拟名"D:/路径名" 2 <Directory "D:/路径名"> 3 Options Indexes FollowSymLinks MultiViews IncludesNoExec 4 AddOutputFilter Includes html 5 AllowOverride None 6 order allow,deny 7 Allow from all 8 </Directory>
重启apache,网站运行地址 http://127.0.0.1:端口号/路径名/其它文件名,OK
然后就是rdlc不显示的问题,只有工具栏,而且抱脚本错误(未引用ajax Asp.Net应用程序框架,而且连续多抱了3,4个错误)除了大家网上查的其它问题,都处理后,依然没解决,那也多半是路径的问题了,也是vs,IIS中可以运行,apache下不行,也是用探针测了路径的问题,路径确实不同,把路径改成虚拟路径后,没问题了
问题3:当项目发布到服务器后,经常性的,(未能添加引用程序集****************),想必大家肯定遇到这个,这个你可以在你本机上的C:\windows\assimble\下找到程序集,拷过去就OK了,如何考呢, 告诉大家一个方法(用好压软件打开,在地址栏输入路径)
拷过去,OK,
好了,吃饭了,不说了,各位遇到如此问题还有什么不懂的地方,可以给我留言