【问题标题】:Internal Server Error while running a simple .Net Core MVC application on Ubuntu 16.04在 Ubuntu 16.04 上运行简单的 .Net Core MVC 应用程序时出现内部服务器错误
【发布时间】:2016-07-01 08:19:31
【问题描述】:

在 Ubuntu 上使用 .Net core 1.0 运行简单的“hello world”应用程序时出现内部服务器错误。我确定我错过了一些简单的东西,但无法弄清楚它是什么。它一直有效,直到我在 HomeController 中用 return View(); 替换了 return Content("Hello, world!");,并将 using System.IO;.UseContentRoot(Directory.GetCurrentDirectory()) 添加到 Program.cs。

我尝试将 SystemSystem.X 添加到 Startup.cs 的依赖项列表中,但无济于事。

程序.cs

using Microsoft.AspNetCore.Hosting;
using System.IO;

namespace aspnetcoreapp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseStartup<Startup>()
                .Build();

            host.Run();
        }
    }
}

project.json

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" }
  },
  "frameworks": {
    "netcoreapp1.0": {}
  }
}

Startup.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;

namespace aspnetcoreapp
{
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
        }

        public void Configure(IApplicationBuilder app)
        {
            app.UseDeveloperExceptionPage();

            app.UseStaticFiles();

            app.UseMvc();
        }
    }
}

HomeController.cs

using Microsoft.AspNetCore.Mvc;

namespace aspnetcoreapp
{
    [Route("/")]
    [Route("[controller]")]
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    }
}

dotnet 运行

Project aspnetcoreapp (.NETCoreApp,Version=v1.0) will be compiled because inputs were modified
Compiling aspnetcoreapp for .NETCoreApp,Version=v1.0

Compilation succeeded.
    0 Warning(s)
    0 Error(s)

Time elapsed 00:00:01.0784778


Hosting environment: Production
Content root path: /home/cvandal/code/aspnetcoreapp
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

结果

编译处理此请求所需的资源时出错。请查看以下具体错误 详细说明并适当修改您的源代码。

生成的代码

找不到类型或命名空间名称“System”(您是 缺少 using 指令或程序集引用?) 使用系统;找不到类型或命名空间名称“System”(您是否缺少 using 指令或程序集引用?) 使用 System.Linq;找不到类型或命名空间名称“System”(您是否缺少 using 指令或程序集引用?) 使用 System.Collections.Generic;命名空间中不存在类型或命名空间名称“ViewFeatures” 'Microsoft.AspNetCore.Mvc'(您是否缺少程序集参考?) 使用 Microsoft.AspNetCore.Mvc.ViewFeatures;找不到类型或命名空间名称“System”(您是否缺少 using 指令或 装配参考?) 使用 System.Threading.Tasks;无法定义使用“动态”的类或成员,因为编译器需要类型 找不到“System.Runtime.CompilerServices.DynamicAttribute”。 您是否缺少参考? 公共类 _Views_Home_Index_cshtml :Microsoft.AspNetCore.Mvc.Razor.RazorPage 预定义类型 'System.Boolean' 未定义或导入 公共类_Views_Home_Index_cshtml:Microsoft.AspNetCore.Mvc.Razor.RazorPage 类型“对象”是 在未引用的程序集中定义。您必须添加一个 引用程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 公共类_Views_Home_Index_cshtml:Microsoft.AspNetCore.Mvc.Razor.RazorPage 类型“对象”是 在未引用的程序集中定义。您必须添加一个 引用程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 公共 Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { 获取;私人套装; } 预定义类型 'System.Object' 未定义或导入 公共 Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { 获取;私人套装;类型或命名空间 名称空间中不存在名称“ViewFeatures” 'Microsoft.AspNetCore.Mvc'(您是否缺少程序集参考?) 公共 Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { 获取;私人套装; } 预定义类型 'System.Void' 未定义或导入 公共 Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider { 获取;私人套装; '对象'类型是 在未引用的程序集中定义。您必须添加一个 引用程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 公共 Microsoft.AspNetCore.Mvc.IUrlHelper 网址 { 获取;私人套装;未定义或导入预定义类型“System.Object” 公共 Microsoft.AspNetCore.Mvc.IUrlHelper 网址 { 获取;私人套装;类型或命名空间名称“IUrlHelper”不存在于 命名空间“Microsoft.AspNetCore.Mvc”(您是否缺少程序集 参考?) 公共 Microsoft.AspNetCore.Mvc.IUrlHelper 网址 { 获取;私人套装;未定义或导入预定义类型“System.Void” 公共 Microsoft.AspNetCore.Mvc.IUrlHelper 网址 { 获取;私人套装; 'Object' 类型是在一个程序集中定义的,它不是 参考。您必须添加对程序集“System.Runtime”的引用, 版本=4.1.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 公共 Microsoft.AspNetCore.Mvc.IViewComponentHelper 组件 { 获取;私人套装;未定义预定义类型“System.Object” 或进口 公共 Microsoft.AspNetCore.Mvc.IViewComponentHelper 组件 { 获取;私人套装;类型或命名空间名称 命名空间中不存在“IViewComponentHelper” 'Microsoft.AspNetCore.Mvc'(您是否缺少程序集参考?) 公共 Microsoft.AspNetCore.Mvc.IViewComponentHelper 组件 { 获取;私人套装;未定义预定义类型“System.Void”或 进口的 公共 Microsoft.AspNetCore.Mvc.IViewComponentHelper 组件 { 获取;私人套装;类型“对象”是在一个程序集中定义的 没有被引用。您必须添加对程序集的引用 'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。 公共 Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { 获取;私人套装;未定义预定义类型“System.Object”或 进口的 公共 Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { 获取;私人套装;类型或命名空间名称“IJsonHelper”不 存在于命名空间“Microsoft.AspNetCore.Mvc.Rendering”中(你是 缺少程序集参考?) 公共 Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { 获取;私人套装;未定义预定义类型“System.Void”或 进口的 公共 Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json { 获取;私人套装;类型“对象”是在一个程序集中定义的 没有被引用。您必须添加对程序集的引用 'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装;预定义类型 'System.Object' 不是 定义或导入 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装;类型或命名空间名称 'IHtmlHelper' 命名空间“Microsoft.AspNetCore.Mvc.Rendering”中不存在 (您是否缺少程序集参考?) 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装; 'Object' 类型在程序集中定义 没有被引用。您必须添加对程序集的引用 'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装;预定义类型 'System.Object' 不是 定义或导入 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装; } 不能定义一个类或成员 使用“动态”,因为编译器需要类型 找不到“System.Runtime.CompilerServices.DynamicAttribute”。 您是否缺少参考? 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装;预定义类型 'System.Boolean' 不是 定义或导入 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装;预定义类型 'System.Void' 不是 定义或导入 公共 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html { 获取;私人套装;异步方法的返回类型必须是 无效,任务或任务 public override async Task ExecuteAsync() 类型“Object”是在未引用的程序集中定义的。您必须添加一个 引用程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 public override async Task ExecuteAsync() 未定义或导入预定义类型“System.Object” public override async Task ExecuteAsync() 找不到类型或命名空间名称“Task”(您是否缺少 using 指令还是程序集参考?) 公共覆盖异步任务ExecuteAsync()'_Views_Home_Index_cshtml.ExecuteAsync()':返回类型必须是'Task' 匹配被覆盖的成员 'RazorPage.ExecuteAsync()' public override async Task ExecuteAsync() 类型“Task”在未引用的程序集中定义。您必须添加一个 参考程序集 'System.Threading.Tasks, Version=4.0.10.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 公共覆盖异步任务 ExecuteAsync() 未定义或导入预定义类型“System.Void” 公共_Views_Home_Index_cshtml() { 'Object' 类型是在未引用的程序集中定义的。您必须添加对程序集“System.Runtime”的引用, 版本=4.1.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Object” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“属性”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Void” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“对象”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Object” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“属性”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Void” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“对象”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Object” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“属性”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Void” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“对象”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Object” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“属性”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Void” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“对象”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Object” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 类型“属性”在未引用的程序集中定义。 您必须添加对程序集 'System.Runtime, Version=4.1.0.0, 文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Void” [Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute] 未定义或导入预定义类型“System.Void” public _Views_Home_Index_cshtml() 未定义或导入预定义类型“System.Int32” BeginContext(0, 181, true);未定义或导入预定义类型“System.Int32” BeginContext(0, 181, true);未定义或导入预定义类型“System.Boolean” BeginContext(0, 181, true); “对象”类型是在未引用的程序集中定义的。您必须添加对 程序集'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。 BeginContext(0, 181, true);未定义或导入预定义类型“System.Object” BeginContext(0, 181, true);未定义或导入预定义类型“System.Void” BeginContext(0, 181, true);未定义或导入预定义类型“System.String” WriteLiteral("\n\n\n \n \n\n aspnetcoreapp\n
\n \n \n

你好,世界!

\n
\n\n"); 类型“对象”是在一个程序集中定义的 没有被引用。您必须添加对程序集的引用 'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。 WriteLiteral("\n\n\n \n \n\n aspnetcoreapp\n
\n \n \n

你好,世界!

\n
\n\n"); 未定义预定义类型'System.Object' 或进口 WriteLiteral("\n\n\n \n \n\n aspnetcoreapp\n
\n \n \n

你好,世界!

\n
\n\n"); 预定义类型 'System.Void' 未定义或 进口的 WriteLiteral("\n\n\n \n \n\n aspnetcoreapp\n
\n \n \n

你好,世界!

\n
\n\n"); 类型“对象”是在一个程序集中定义的 没有被引用。您必须添加对程序集的引用 'System.Runtime,版本=4.1.0.0,文化=中性, PublicKeyToken=b03f5f7f11d50a3a'。 EndContext();未定义或导入预定义类型“System.Object” EndContext();未定义或导入预定义类型“System.Void” EndContext(); '_Views_Home_Index_cshtml.ExecuteAsync()':并非所有代码路径都返回值 公共覆盖异步任务 ExecuteAsync()

【问题讨论】:

    标签: c# asp.net .net linux asp.net-core


    【解决方案1】:

    project.jsonbuildOptions 节点下,添加一个名为"preserveCompilationContext": true 的条目,这应该可以解决上述错误。

    【讨论】:

    • 这对我也有用 - 虽然我不知道为什么? :)
    • 同上(并适当投票)。我希望他们在最终版本的工具发布时记录 .csproj 更改,以解释所有这些设置,以及将它们设置为允许值的后果。
    • *.csproj 版本:将&lt;preserveCompilationContext&gt;true&lt;/preserveCompilationContext&gt; 添加到&lt;PropertyGroup&gt;
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2018-02-26
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多