在Ubuntu 16.04上运行简单的.Net Core MVC应用程序时出现内部服务器错误

cva*_*dal 5 .net c# linux asp.net asp.net-core

我在Ubuntu上使用.Net core 1.0运行一个简单的"hello world"应用程序时遇到内部服务器错误.我确信我错过了一些简单的东西,但无法弄清楚它是什么.这是工作,直到我取代return Content("Hello, world!");return View();在HomeController中,并添加using System.IO;.UseContentRoot(Directory.GetCurrentDirectory())到Program.cs中.

我曾尝试添加SystemSystem.X我在Startup.cs无济于事依赖的列表.

Program.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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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": {}
  }
}
Run Code Online (Sandbox Code Playgroud)

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

HomeController.cs

using Microsoft.AspNetCore.Mvc;

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

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.
Run Code Online (Sandbox Code Playgroud)

结果

在编译处理此请求所需的资源期间发生错误.请查看以下特定错误详细信息并相应地修改源代码.

生成的代码

使用System无法找到类型或命名空间名称'System'(您是否缺少using指令或程序集引用?); 使用System.Linq找不到类型或命名空间名称'System'(您是否缺少using指令或程序集引用?); 使用System.Collections.Generic找不到类型或命名空间名称'System'(您是否缺少using指令或程序集引用?); 使用Microsoft.AspNetCore.Mvc.ViewFeatures在命名空间"Microsoft.AspNetCore.Mvc"(您是否缺少程序集引用?)中不存在类型或命名空间名称"ViewFeatures"; 使用System.Threading.Tasks找不到类型或命名空间名称'System'(您是否缺少using指令或程序集引用?); 无法定义使用"动态"的类或成员,因为无法找到编译器所需类型"System.Runtime.CompilerServices.DynamicAttribute".你错过了参考吗?public class _Views_Home_Index_cshtml:Microsoft.AspNetCore.Mvc.Razor.RazorPage预定义类型'System.Boolean'未定义或导入公共类_Views_Home_Index_cshtml:Microsoft.AspNetCore.Mvc.Razor.RazorPage类型'Object'在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public class _Views_Home_Index_cshtml:Microsoft.AspNetCore.Mvc.Razor.RazorPage类型"Object"在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider {get; 私人集; 预定义类型'System.Object'未定义或导入公共Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider {get; 私人集; 命名空间"Microsoft.AspNetCore.Mvc"中不存在类型或命名空间名称"ViewFeatures"(您是否缺少程序集引用?)public Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider {get; 私人集; 预定义类型'System.Void'未定义或导入公共Microsoft.AspNetCore.Mvc.ViewFeatures.IModelExpressionProvider ModelExpressionProvider {get; 私人集; "Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public Microsoft.AspNetCore.Mvc.IUrlHelper Url {get; 私人集; 预定义类型'System.Object'未定义或导入公共Microsoft.AspNetCore.Mvc.IUrlHelper Url {get; 私人集; 命名空间"Microsoft.AspNetCore.Mvc"中不存在类型或命名空间名称"IUrlHelper"(您是否缺少程序集引用?)public Microsoft.AspNetCore.Mvc.IUrlHelper Url {get; 私人集; 预定义类型'System.Void'未定义或导入公共Microsoft.AspNetCore.Mvc.IUrlHelper Url {get; 私人集; "Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public Microsoft.AspNetCore.Mvc.IViewComponentHelper Component {get; 私人集; 预定义类型'System.Object'未定义或导入公共Microsoft.AspNetCore.Mvc.IViewComponentHelper Component {get; 私人集; 命名空间"Microsoft.AspNetCore.Mvc"中不存在类型或命名空间名称"IViewComponentHelper"(您是否缺少程序集引用?)public Microsoft.AspNetCore.Mvc.IViewComponentHelper Component {get; 私人集; 预定义类型'System.Void'未定义或导入公共Microsoft.AspNetCore.Mvc.IViewComponentHelper Component {get; 私人集; "Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json {get; 私人集; 预定义类型'System.Object'未定义或导入公共Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json {get; 私人集; 命名空间'Microsoft.AspNetCore.Mvc.Rendering'中不存在类型或命名空间名称'IJsonHelper'(您是否缺少程序集引用?)public Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json {get; 私人集; 预定义类型'System.Void'未定义或导入公共Microsoft.AspNetCore.Mvc.Rendering.IJsonHelper Json {get; 私人集; "Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 预定义类型'System.Object'未定义或导入公共Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 命名空间"Microsoft.AspNetCore.Mvc.Rendering"中不存在类型或命名空间名称"IHtmlHelper <>"(您是否缺少程序集引用?)public Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; "Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 预定义类型'System.Object'未定义或导入公共Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 无法定义使用"dynamic"的类或成员,因为无法找到编译器所需类型"System.Runtime.CompilerServices.DynamicAttribute".你错过了参考吗?public Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 预定义类型'System.Boolean'未定义或导入公共Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 预定义类型'System.Void'未定义或导入公共Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper Html {get; 私人集; 异步方法的返回类型必须为void,Task或Task public override async Task ExecuteAsync()类型'Object'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public override async Task ExecuteAsync()未定义的预定义类型'System.Object'或导入的公共覆盖异步任务ExecuteAsync()无法找到类型或命名空间名称'Task'(您是否缺少using指令或程序集引用? )public override async Task ExecuteAsync()'_ Views_Home_Index_cshtml.ExecuteAsync()':返回类型必须是'Task'才能匹配被覆盖的成员'RazorPage.ExecuteAsync()'public override async Task ExecuteAsync()类型'Task'在一个未引用的程序集.您必须添加对程序集'System.Threading.Tasks,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.public override async Task ExecuteAsync()未定义或导入预定义类型'System.Void'public _Views_Home_Index_cshtml(){}类型'Object'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型"System.Object"[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型"属性"在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型'System.Void'[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型'Object'在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型"System.Object"[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型"属性"在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型'System.Void'[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型'Object'在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型"System.Object"[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型"属性"在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型'System.Void'[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型'Object'在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型"System.Object"[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型"属性"在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型'System.Void'[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型'Object'在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]未定义或导入预定义类型"System.Object"[Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute]类型"属性"在程序集中定义没有引用.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,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); "Object"类型在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,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 \naspnetcoreapp \n
\n \n \n

你好,世界!

\n
\n \n");类型'Object'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.WriteLiteral("\n \n \n \n \n \n \n
\naspnetcoreapp \n \n \n \n

你好,世界!

\n
\n \n");预定义类型'System.Object'未定义或导入WriteLiteral("\n \n \n \n \n \n \nasnetnetcoreapp \n
\n \n \n

你好,世界!

\n
\n \n");预定义类型'System.Void'未定义或导入WriteLiteral("\n \n \n \n \n \n \naspnetcoreapp \n
\n \n \n

你好,世界!

\n
\n \n");类型'Object'在未引用的程序集中定义.您必须添加对程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.EndContext();未定义或导入预定义类型'System.Object'EndContext();未定义或导入预定义类型'System.Void'EndContext();'_ Views_Home_Index_cshtml.ExecuteAsync()':并非所有代码路径都返回值公共覆盖异步任务ExecuteAsync()

Kir*_*lla 14

buildOptions节点中project.json,添加一个名为的条目"preserveCompilationContext": true,这应该修复上述错误.