网际飞扬

还记得年少时的梦么,醒不过来 便信以为真……

主题背景
本网站首发版本创建于1999年4月
网际飞扬
手机网站二维码

请使用手机扫描二维码,登录网站手机版。

关于ServerErrorin/Application错误的深入理解和解决方案

  • 2023-02-01
  • 929
  • 飞驰的心
前几天有个客户是个外贸网站,需要在美国购买一个境外虚拟主机放置网站,网站是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);

返回当前页面的物理路径


截至目前所有问题就都解决了,千万别复制上面的代码,我写这个博客是让您知其所以然,因为只有这样,以后遇到问题才好对症下药。

本博客所有内容均为原创,原则上我不希望你转载。如特别喜欢而转载的话,请务必注明出处“网际飞扬 http://www.fayo.net” 否则本人闲来无事可能会把你误当成维权的靶子。

评论

验证码

全部评论

共{{commentCount}}条
  • {{i+1}}楼
    {{rs.Msg_Sender}}{{rs.Msg_Datetime}}

    {{rs.Msg_Content}}

播放器封面
  • 宠物精灵