关于ServerErrorin/Application错误的深入理解和解决方案
- 2023-02-01
- 1016
- 飞驰的心
前几天有个客户是个外贸网站,需要在美国购买一个境外虚拟主机放置网站,网站是c#开发的,需要运行于.net4.0以上的环境中。
在网上找了一家空间商,网站上传后提示——
Server Error in '/' Application.
经过百度查询,这是由于服务器目录权限而引发的错误。
这时候问题就来了,虚拟主机是将一台物理服务器分割成多个虚拟的区块来运行网站的,每个区块相对独立;主机服务商出于安全性的考虑往往禁止了区块内的程序,翻墙访问区块外的内容。
例如:asp.net网站编译需要有一个临时文件夹,默认位置在 c:\windows\temp下,一般情况下你是没有访问windows目录的权限的,故而会报错;
你也不用天真的要求服务商给你开通 c:\windows\temp 的读写权限,那是不可能的;如果一旦给你开通,你的网站一旦被黑客攻击成功,那么黑客就可以轻易的获得 windows内的各种文件,攻陷整台服务器只是时间问题;
貌似陷入了一个死局,无法破解?
当我们知道了原理后其实解决方案也很简单,配置web.config文件,加入一个节点,将本网站项目的编译的临时文件夹指派到另外一个位置即可;
指到哪儿呢?你对你当前的网站目录不就有读写权嘛?
1、在你的网站根目录下创建一个 temp的文件夹
2、编辑web.config文件,创建一个节点——
tempDirectory属性很好理解吧,就是为当前项目指派一个临时文件夹。
你以为这就完成了?还有个小问题你需要考虑到,你怎么知道你的网站在服务器的哪个物理路径下?
这不难吧,写个程序测试一下就知道了——
创建一个 t.aspx 写入代码:
string path= System.AppDomain.CurrentDomain.BaseDirectory.ToString();
Response.Write(path);
返回当前页面的物理路径
截至目前所有问题就都解决了,千万别复制上面的代码,我写这个博客是让您知其所以然,因为只有这样,以后遇到问题才好对症下药。
在网上找了一家空间商,网站上传后提示——
Server Error in '/' Application.
经过百度查询,这是由于服务器目录权限而引发的错误。
这时候问题就来了,虚拟主机是将一台物理服务器分割成多个虚拟的区块来运行网站的,每个区块相对独立;主机服务商出于安全性的考虑往往禁止了区块内的程序,翻墙访问区块外的内容。
例如:asp.net网站编译需要有一个临时文件夹,默认位置在 c:\windows\temp下,一般情况下你是没有访问windows目录的权限的,故而会报错;
你也不用天真的要求服务商给你开通 c:\windows\temp 的读写权限,那是不可能的;如果一旦给你开通,你的网站一旦被黑客攻击成功,那么黑客就可以轻易的获得 windows内的各种文件,攻陷整台服务器只是时间问题;
貌似陷入了一个死局,无法破解?
当我们知道了原理后其实解决方案也很简单,配置web.config文件,加入一个节点,将本网站项目的编译的临时文件夹指派到另外一个位置即可;
指到哪儿呢?你对你当前的网站目录不就有读写权嘛?
1、在你的网站根目录下创建一个 temp的文件夹
2、编辑web.config文件,创建一个节点——
tempDirectory属性很好理解吧,就是为当前项目指派一个临时文件夹。
你以为这就完成了?还有个小问题你需要考虑到,你怎么知道你的网站在服务器的哪个物理路径下?
这不难吧,写个程序测试一下就知道了——
创建一个 t.aspx 写入代码:
string path= System.AppDomain.CurrentDomain.BaseDirectory.ToString();
Response.Write(path);
返回当前页面的物理路径
截至目前所有问题就都解决了,千万别复制上面的代码,我写这个博客是让您知其所以然,因为只有这样,以后遇到问题才好对症下药。
本博客所有内容均为原创,原则上我不希望你转载。如特别喜欢而转载的话,请务必注明出处“网际飞扬 http://www.fayo.net”
否则本人闲来无事可能会把你误当成维权的靶子。
评论
全部评论
共{{commentCount}}条{{rs.Msg_Content}}