Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与docker compose一起运行时,SignalR.NetCore Api不工作_Docker_.net Core_Signalr - Fatal编程技术网

与docker compose一起运行时,SignalR.NetCore Api不工作

与docker compose一起运行时,SignalR.NetCore Api不工作,docker,.net-core,signalr,Docker,.net Core,Signalr,我有一个带信号集线器的.NetCore API。 我的应用程序部署在DigitalOcean上,Ubuntu 18.04.3(LTS)x64上 在cmd中运行dotnet run时,程序启动并可通过IP地址访问。API端点和信号集线器都按预期响应(这种情况发生在HTTP上) 但是,我确实在控制台中看到了这一点: 跑步时 docker编写构建 docker编写程序 应用程序启动(在HTTPS上),API字与预期一致,但信号器给出以下错误: 我也在控制台中得到了这个 这是我的docker

我有一个带信号集线器的.NetCore API。 我的应用程序部署在DigitalOcean上,Ubuntu 18.04.3(LTS)x64上

  • 在cmd中运行dotnet run时,程序启动并可通过IP地址访问。API端点和信号集线器都按预期响应(这种情况发生在HTTP上) 但是,我确实在控制台中看到了这一点:

  • 跑步时

    docker编写构建
    docker编写程序

应用程序启动(在HTTPS上),API字与预期一致,但信号器给出以下错误:

我也在控制台中得到了这个


这是我的docker撰写文件:

#docker-compose

version: '2'

services:
  app:
    build:
      context:  ./
      dockerfile: Dockerfile
  https-portal:
    image: steveltn/https-portal:1
    ports:
      - '80:80'
      - '443:443'
    links:
      - app
    restart: always
    environment:
      DOMAINS: 'ns2.we*******.*** -> http://app:80'
      STAGE: 'production'
这是我的Docker文件

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["iCoose.API/iChoose.API.csproj", "iCoose.API/"]
COPY ["iChoose.Business.Entities/iChoose.Business.Entities.csproj", "iChoose.Business.Entities/"]
COPY ["iChoose.Business.Services/iChoose.Business.Services.csproj", "iChoose.Business.Services/"]
COPY ["iChoose.Common.Core/iChoose.Common.Core.csproj", "iChoose.Common.Core/"]
COPY ["iChoose.DataAccess.Data/iChoose.DataAccess.Data.csproj", "iChoose.DataAccess.Data/"]
RUN dotnet restore "iCoose.API/iChoose.API.csproj"
COPY . .
WORKDIR "/src/iCoose.API"
RUN dotnet build "iChoose.API.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "iChoose.API.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "iChoose.API.dll"]
我的程序.cs

public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
                webBuilder.UseUrls("http://*:80");
            });
}
publicstaticvoidmain(字符串[]args)
{
CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
UseUrls(“http://*:80”);
});
}
这是我的创业:

 public class Startup
{
    const string CorsAllowAnyOriginPolicyName = "AllowAnyOrigin";

    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }


    public void ConfigureServices(IServiceCollection services)
    {
        ConfigureCORS(services);
        services.AddControllers(config => 
          {}).SetCompatibilityVersion(CompatibilityVersion.Latest);

        services.AddEntityFrameworkNpgsql().AddDbContext<AppDbContext>(opt =>
        {
            opt.UseNpgsql(Configuration["ConnectionStrings:AppEntities"]);
        });

        services.AddRazorPages();
        services.AddSignalR();
        services.AddHttpClient();

        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddSingleton<VotingHub>();

        #region JWT authentication
        ....
        #endregion
    }


    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();

        app.UseRouting();
        app.UseCors(CorsAllowAnyOriginPolicyName);

        app.UseAuthentication();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
            endpoints.MapControllers();
            endpoints.MapHub<VotingHub>("/voteHub");
        });
    }


    private void ConfigureCORS(IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy(CorsAllowAnyOriginPolicyName, policy =>
            {
                policy.AllowAnyOrigin();
                policy.AllowAnyMethod();
                policy.AllowAnyHeader();
            });
        });

    }
 }
公共类启动
{
常量字符串CorsAllowAnyOriginPolicyName=“AllowAnyOrigin”;
公共启动(IConfiguration配置)
{
配置=配置;
}
公共IConfiguration配置{get;}
public void配置服务(IServiceCollection服务)
{
配置公司(服务);
services.AddControllers(配置=>
{}.SetCompatibilityVersion(CompatibilityVersion.Latest);
services.AddEntityFrameworkNpgsql().AddDbContext(opt=>
{
opt.UseNpgsql(配置[“连接字符串:外观]);
});
services.AddRazorPages();
services.AddSignalR();
services.AddHttpClient();
services.AddSingleton();
services.AddSingleton();
#区域JWT认证
....
#端区
}
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Error”);
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
应用程序UseCors(CorsAllowAnyOriginPolicyName);
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(端点=>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapHub(“/voteHub”);
});
}
专用void配置公司(iSeries收集服务)
{
services.AddCors(选项=>
{
options.AddPolicy(CorsAllowAnyOriginPolicyName,policy=>
{
policy.AllowAnyOrigin();
policy.AllowAnyMethod();
policy.AllowAnyHeader();
});
});
}
}