我正在尝试在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
答案 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
希望您会发现这很有用。