码迷,mamicode.com
首页 > Web开发 > 详细

Jexus System.MissingMethodException: Method 'System.Web.Hosting.HostingEnvironment.set_IsHosted' not found 报错的解决

时间:2016-05-18 21:34:59      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

看到大家都尝试Jexus以及dotnetcore,再加上新租了腾讯云的centos linux云服务器,决定要把公司比较简单的提供升级下载的网站部署到linux下试一下。

按照ASP.NET跨平台实践:无需安装Mono的Jexus“独立版” 的方法安装好Jexus 。

部署网站,访问网站时下出现错误
System.MissingMethodException: Method ‘System.Web.Hosting.HostingEnvironment.set_IsHosted‘ not found.

 

按照“宇内流云”说的“windows dll最少化”原则精简dll。

 

[quote]
找不到 “set_IsHosted”,是因为你网站bin文件夹中有Windows上的System.Web.dll造成的。
将VS生成的web应用程序放到Linux上运行,要特别小心的就是bin文件夹中的dll。因为,VS是针对windows的,它不会考虑你是否在Linux上运行,所以,它带的dll,常有不兼容情况发生,这就是大家最容易遇上的不是坑的坑。
处理办法是:bin文件夹中的“windows dll最少化”!
意思就是,mono已经自带了的dll(见/usr/lib/moo/gac或jexus的runtime/lib/mono/gac),那就一定不要用win上带...[/quote]

 

精简后访问网站时报错:

The view must derive from WebViewPage, or WebViewPage<TModel>. (The view at ‘~/Views/home/index.cshtml’ must derive from WebViewPage, or WebViewPage<TModel>

经过各种增减引用dll及上网查找原因,最终发现是Web.config引用dll的问题(包括网站根目录下的Web.config以及Views目录下的Web.config)

经过精简后的网站根目录Web.config内容如下:

<?xml version="1.0"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0"/>
    <add key="webpages:Enabled" value="false"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
  <!--
    有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。

    可在 <httpRuntime> 标记上设置以下特性。
      <system.Web>
        <httpRuntime targetFramework="4.5" />
      </system.Web>
  -->
  <system.web>
    <compilation targetFramework="4.5.1"/>
    <httpRuntime targetFramework="4.5.1"/>
  </system.web>
  <system.web>
        <customErrors mode="on"/>
    </system.web>
</configuration>

经过精简后的Views目录下的Web.config内容如下:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, 
                  System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, 
               Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor,
               Version=2.0.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>
  
  <system.web.webPages.razor>
    <pages pageBaseType="System.Web.Mvc.WebViewPage" ></pages>
  </system.web.webPages.razor>
</configuration>

经过精简后Bin目录下的dll如下:(NPOI、ICSharpCode、itextsharp、log4net、Newtonsoft.Json是因为这个项目需要才引用的dll,如果是空白项目这几个dll也不需要)

技术分享  

重启jexus后,终于看到网站访问正常的界面了!

 

Jexus System.MissingMethodException: Method 'System.Web.Hosting.HostingEnvironment.set_IsHosted' not found 报错的解决

标签:

原文地址:http://www.cnblogs.com/29795113/p/5506324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!