Jexus部署mvc网站因预编译引发的一场血案

Jexus部署mvc网站因预编译引发的一场血案,Jexus部署MVC网站报System.Web.HttpException错误解决方法,在去年的工作当中笔者将古老的asp.net webform开发的网站部署到Linux服务器上,web服务器使用的是Jexus,在迁移webform网站到Linux环境中。

Jexus部署mvc网站因预编译引发的一场血案,Jexus部署MVC网站报System.Web.HttpException错误解决方法,在去年的工作当中笔者将古老的asp.net webform开发的网站部署到Linux服务器上,web服务器使用的是Jexus,在迁移webform网站到Linux环境中,期间也得到了Jexus作者宇内流云的多次帮助,解决了很多问题,由衷的感谢作者热心的帮助。

去年的迁移工作中,也有部分网站是asp.net mvc开发的,当时在迁移用mvc开发的站点过程比较顺利,没有遇到什么大的问题;但时过大半年,最近对MVC站点引用的类库进行了功能调整和升级,按照往常一样的操作将网站发布到本地目录,然后通过FileZilla上传到网站服务器上,之后打开站点来看出现了System.Web.HttpException错误,如下图所示:

Jexus部署mvc网站因预编译引发的一场血案
Jexus部署mvc网站因预编译引发的一场血案 4

Jexus System.Web.HttpException错误

错误消息:

Application Exception
System.Web.HttpException
The resource cannot be found.
Description: HTTP 404.The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

Details: Requested URL: jhrs.com/vultr

Exception stack trace:
  at System.Web.StaticFileHandler.ProcessRequest (System.Web.HttpContext context) [0x000b9] in <a0cf28d1b51f4484bc8478653eeeba81>:0 
  at System.Web.DefaultHttpHandler.BeginProcessRequest (System.Web.HttpContext context, System.AsyncCallback callback, System.Object state) [0x0007f] in <a0cf28d1b51f4484bc8478653eeeba81>:0 
  at System.Web.HttpApplication+<Pipeline>d__225.MoveNext () [0x008d4] in <a0cf28d1b51f4484bc8478653eeeba81>:0 
  at System.Web.HttpApplication.Tick () [0x00000] in <a0cf28d1b51f4484bc8478653eeeba81>:0 
Version Information: 6.8.0.123 (tarball); ASP.NET Version: 4.0.30319.42000
Powered by Mono

Jexus部署mvc网站因预编译引发的一场血案

Jexus部署MVC网站报System.Web.HttpException错误解决方法,先交待一下这个asp.net mvc站点是如何部署的,该站点是使用类似Windows 服务器上,即在IIS里面添加虚拟目录的方式部署的,当然对于Linux环境下,如果不是使用.net core开发的网站或者项目,即使用传统的asp.net webform,asp.net mvc开发的网站项目部署到Linux下,web服务器就使用Jexus来充当吧,因此我在/usr/jexus/siteconf里面添加了一个站点配置(只是开头部分,非完整配置),如下:

######################
# Web Site: Default 
########################################

port=80
root=/vultr /var/www/jhrs.com/vultr
hosts=jhrs.com

那么这时访客访问这个站点对应的地址就是:https://jhrs.com/vultr

交待了上面的前提条件,接下来说下笔者是如何排错的,具体排查错误步骤如下:

  1. 在开发环境上面,VS里面直接运行这个MVC站点功能一切正常。
  2. vultr这个站点发布文件直接复制到主站目录(即jhrs.com站目录),此时也可以访问,但因为是子站点,不可能占用主站域名,到这里基本上表明程序没有问题。
  3. 仔细检查MVC代码,当完成了一些入口代码检查,如App_Start目录里面的代码检查,并未发现有什么问题。
  4. 经过近一天临近下班时,突然想起来可能是发布配置的问题,结果证实了。
Jexus部署MVC网站报System.Web.HttpException错误解决方法
Jexus部署MVC网站报System.Web.HttpException错误解决方法

那么到此就直接说结论吧,出现这个错误的原因是在文件发布选项那里勾选了在发布期间预编译选项造成的,知道了原因就很简单了,不勾选它重新发布就可以了,然后上传到服务器上就OK了。

Jexus部署MVC网站报System.Web.HttpException错误解决方法

关于预编译的介绍,微软官网有说明,并且博客园上也有相应的文章介绍。

重新发布并上传之后再次打开站点查看一下,一切突然变得那么美好,这就是今天折腾了近一天踩的一个坑,特此记录一下,给后来人提供快速解决方法。

最后再重复说一下要点,当你把网站部署到 Jexus上如果出现System.Web.HttpException错误,不妨检查一下你是怎么发布网站的。

加入电报群

【江湖人士】(jhrs.com)原创文章,作者:江小编,如若转载,请注明出处:https://jhrs.com/2022/44934.html

扫码加入电报群,让你获得国外网赚一手信息。

文章标题:Jexus部署mvc网站因预编译引发的一场血案

(0)
江小编的头像江小编
上一篇 2022-03-20 16:47
下一篇 2022-05-29 15:58

热门推荐

Leave a Reply

Sending

国外老牌便宜域名服务商Namecheap注册com域名大优惠,抢到就赚到,优惠码:NEWCOM698
$5.98/年
直达官网