从编译的dll运行dotnet核心api

时间:2017-12-07 16:39:40

标签: asp.net-core .net-core asp.net-core-webapi

我正在尝试在MacOs上运行dotnet核心WebApi。使用dotnet run运行项目工作正常,因为它从源代码运行。

现在我想打包Api并在其他机器上运行它,所以我使用以下命令

dotnet publish WebApiX.sln -f netcoreapp2.0 -c Release -o ../output -r osx.10.12-x64

包装整个应用程序及其依赖项。在此之后我想用dotnet WebApiX.Api.dll启动Web服务器但是我收到以下错误:

  

未处理的异常:System.ArgumentNullException:值不能   空值。参数名称:pathFormat at   Microsoft.Extensions.Logging.FileLoggerExtensions.AddFile(ILoggerFactory   loggerFactory,String pathFormat,LogLevel minimumLevel,   IDictionary`2 levelOverrides,Boolean isJson,Nullable`1   fileSizeLimitBytes,Nullable`1 retainedFileCountLimit)

此异常在Startup类

中显示的Configure方法中生成
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // Configure Midleware
    loggerFactory.AddFile(Configuration.GetSection("LogsLocation").Value);

    app.UseMiddleware<SerilogMiddleware>();
    app.UseMiddleware<ErrorWrappingMiddleware>();

    app.UseAuthentication(); 
    app.UseMvc();
}

为了测试目的,我试图删除行LoggerFactory .. 而且它很奇怪,因为错误现在不同了。

Unhandled Exception: System.InvalidOperationException: Unable to find the required services. Please add all the required services by calling 'IServiceCollection.AddMvc' inside the call to 'ConfigureServices(...)' in the application startup code.
   at Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder app, Action`1 configureRoutes)
   at WeidertAuth.Api.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) in /Users/mariomarques/Documents/Avnoconn/Projects/WEIDERT/WeidertServices/weidert.auth/WeidertAuth.Api/Startup.cs:line 249

1 个答案:

答案 0 :(得分:0)

您应将运行时标识符添加到项目文件(.csproj),如下所示:

<RuntimeIdentifiers>osx.10.12-x64</RuntimeIdentifiers>

完成后,您应该还原项目并使用cmd发布它:

dotnet restore

// publish for macos
dotnet publish -r osx.10.12-x64 --output bin/dist/osx

然后您可以在以下路径中的项目中找到该项目的可执行文件:

MyProject / bin / dist / osx

希望您会发现这很有用。