关于程序源码,.Net版本,程序集,等全部文件一样,在本地发布没有问题,在服务器上面重写页面却出现了404错误的问题的解决方案。
出现问题的时间:20140919,解决问题的时间,20140920,问题出现的效果如下
本地发布后点击搜索:
服务器发布后点击搜索
这就奇怪了,明明是两个同样源码,同样配置文件,同样数据库的,本地不出现问题,服务器出现问题。
解决方法如下:
第一,检测iis有没有权限访问此文件夹下面的url重写的地址。(返回:添加了net work service 这个账户的权限,使其在此文件夹下面有访问的权利)。
第二,检查数据库是否匹配,可能因为更改了master(此项目全局路径配置文件)配置文件地址使其访问的地址变更或者更改!(返回:没有更新,还是原来路径)。
第三,检查有没有恶意的程序对文件夹内的文件进行了读取保护,还是因为恶意文件对文件夹进行了感染导致安防软件对此文件夹的读取或者写入造成了拦截(返回:关闭数据库或更改及外在的链接端口例如1433,21、25、80、110)等危险端口。
完成了这么这么多,(程序集,文件,配置都正常访问)为啥都没有修复这个问题,我就奇怪了,到底是什么原因,后来我就用了程序员惯用的排除法。(你懂的,这已经是我最后的方法了,再不行,我就,我就去屎~)
怎么排除,排除就是将所有服务器元素与本机的元素写出来相比对,把相同的划掉,总有一个不同点,我们就研究这个不同点,看看到底有什么异常,至于那些相同点,我们就没有必要去观察了!
所在地
程序集
源码
配置
系统
iis
数据库
Net版本
本地
Cw100
Cw100
Cw100
Win8.1
Iis8.5
6G
2014
.4.0
线上
Cw100
Cw100
Cw100
Win2003
Iis6
2.5G
2005
.4.0
不一样的就是这些了,
数据库两地的实例都是一个,内存的,我想也没打关系,这两可以先排除了。下面就这两个不同点。
第一,系统方面,系统方面,我找了很多人试过这个版本,除了windowsServer没有之外,win7,win8,win8.1都没事,我想应该跟系统没太大关系。
第二,Iis,iis里服务端是6.0,我本地是8.5,我估计这里面可能有点玄乎,然后又绕到了iis,检测iis版本,没问题,而且其他网站都能发布成功,为啥子这个不行勒。
然后睡了一觉…
惊觉,是不是兼容的问题!!!
然后想起了前阵子报的那个错
配置文件配置了两个节点,一个用于保存版本为iis7以下的,一个用与配置版本为iis7以上的!我删除了iis7以下的!
是不是删除了一个节点导致了问题!
然后我将原来的配置文件一替换。
然后就OK了
我表示很,很,很无语!!!
后记:因为我发布是全部覆盖原来的文件,所以我可能也误删或者不小心覆盖了以前的配置,我接手这个项目之前,他们在更改这个项目的时候,如果只是简简单单的加个图片或者,或者更改一个url的话,直接去线上更改,这并不是是我推崇的一种解决方案的一种方式,他们并没有提交,也就是很多次看似简单的更改,实际上并没有在项目里面同步,这是一个很棘手的问题,于是乎,我想到了一种非常非常蠢的一种解决方案,我自己写了一个检测代码中判断该文件与现在的文件有什么不同的一个小东西,当然很多人问我为什么不用svn等工具,第一是全是鸟语的,我这个爱国心,不太看得懂,O(∩_∩)O哈哈哈~,
其次,我们公司里面经常会更改文件名字,例如本来这个文件叫 manage 可能之后就叫做CW100.manage,CW200.manage,各种各样的变化,使我不得不半手动,半自动的去更改这个项目的一些问题,有时候经常出现版本破坏的问题,还是要得益于我们的git版本控制工具,我不得不说这是一个很棒的托管工具,每次完成一个项目的更改我都会小心翼翼的备份,才会使这次项目迁移成功!