0

我刚刚使用新的 .NET 支持设置了我的 linux 机器。

  1. 使用本教程:http ://docs.asp.net/en/latest/getting-started/installing-on-linux.html
  2. 拥有这个 dockerfile:

     FROM microsoft/aspnet:1.0.0-beta5
    
     # Copy the project into folder and then restore packages
     COPY . app
     WORKDIR app
     RUN ["dnu","restore"]
    
     # Open this port in the container
     EXPOSE 5000
     # Start application
     ENTRYPOINT ["dnx",".", "web"]
    
  3. 运行docker build .成功

  4. 运行时出现# docker run -p 8080:5000 dockerfile此异常:

    System.InvalidOperationException: No service for type 'Microsoft.Framework.Runtime.IApplicationEnvironment' has been registered.    
        at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService (IServiceProvider provider, System.Type serviceType) [0x00000] in <filename unknown>:0
        at Microsoft.Framework.DependencyInjection.ServiceProviderExtensions.GetRequiredService[IApplicationEnvironment] (IServiceProvider provider) [0x00000] in <filename unknown>:0
        at Microsoft.AspNet.Hosting.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0    
        at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)    
        at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
     --- End of stack trace from previous location where exception was thrown ---   
     at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x00000] in <filename unknown>:0 at Microsoft.Dnx.Runtime.Common.EntryPointExecutor.Execute (System.Reflection.Assembly assembly, System.String[] args, IServiceProvider serviceProvider) [0x00000] in <filename unknown>:0  
     at Microsoft.Dnx.ApplicationHost.Program+<>c__DisplayClass3_0.<ExecuteMain>b__0() [0x00000] in <filename unknown>:0    
     at System.Threading.Tasks.Task`1[System.Threading.Tasks.Task`1[System.Int32]].InnerInvoke() [0x00000] in <filename unknown>:0    
     at System.Threading.Tasks.Task.Execute () [0x00000] in <filename unknown>:0
    

这是我的完整构建日志

http://pastebin.com/e3zpcrFZ

我在这里做错了什么?在 Windows 中运行相同的项目dnx . web会成功启动我的 webapi。

4

1 回答 1

0

自己解决了。发现在与教程一起安装的过程中,它正在安装一个旧的单声道版本。根据这篇文章http://blog.bananacoding.com/blog/first-impressions-of-aspnet-and-visual-studio-code-on-osx ,您需要 Mono 4.x

所以我做了以下事情:

  1. 使用 .net 卸载单声道
  2. 清除它
  3. 使用 mono 网站上的安装说明,安装 mono 4-x
  4. 使用apt-get -o Dpkg::Options::="--force-overwrite" -f install我强制覆盖所有内容,因为我收到有关某些库的错误
  5. dnvm 安装最新
  6. 将我的项目安装到最新版本(参见网上的几个更新帖子)
  7. dnu 恢复
  8. dnx 红隼

完毕!

于 2016-01-10T18:58:09.197 回答