Kestrel, system.InvalidOperationException을 시작할 수 없습니다.

이니 피움

웹 API를 시작하는 데 문제가 있습니다. .net core 3.0 Web Api를 사용하고 있습니다. 나는 문제없이 iis express를 사용하여 로컬에서 디버깅하고 테스트했습니다. 하지만 웹 API를 내 Linux 서버에 배포하려고 할 때 다음과 같은 오류 메시지가 표시됩니다.

crit : Microsoft.AspNetCore.Server.Kestrel [0] Kestrel을 시작할 수 없습니다. System.InvalidOperationException : 경로 기준은 IApplicationBuilder.UsePathBase ()를 사용해서 만 구성 할 수 있습니다.

내 로컬 컴퓨터에서 디버그 모드로 실행하면 동일한 작업이 수행됩니다. 그래서 VS에서 응용 프로그램을 디버깅 할 때 실행 파일을 시작하는 새 프로필을 만들었습니다.

예외 발생 : System.Private.CoreLib.dll의 'System.InvalidOperationException'System.Private.CoreLib.dll에서 'System.InvalidOperationException'유형의 처리되지 않은 예외가 발생했습니다. 경로 기반은 IApplicationBuilder.UsePathBase ()를 사용해서 만 구성 할 수 있습니다.

다음은 Program.cs 및 Startup.cs의 코드입니다.

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

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureKestrel((a, b) => { })
                .UseUrls("http://*:5050,https://*:5051")
                .UseKestrel()                
                .UseStartup<Startup>();
}
public class Startup

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

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc(options => options.EnableEndpointRouting = false).SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

        connectionObject.SetConfiguration(Configuration);

        // configure strongly typed settings objects
        var appSettingsSection = Configuration.GetSection("AppSettings");
        services.Configure<AppSettings>(appSettingsSection);

        // configure jwt authentication
        var appSettings = appSettingsSection.Get<AppSettings>();
        var key = Encoding.ASCII.GetBytes(appSettings.Secret);
        services.AddAuthentication(x =>
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(x =>
        {
            x.Events = new JwtBearerEvents
            {
                OnTokenValidated = context =>
                {
                    var userService = context.HttpContext.RequestServices.GetRequiredService<IUserData>();
                    var userId = int.Parse(context.Principal.Identity.Name);
                    var user = userService.GetById(userId);
                    if (user == null)
                    {
                        // return unauthorized if user no longer exists
                        context.Fail("Unauthorized");
                    }
                    return Task.CompletedTask;
                }
            };
            x.RequireHttpsMetadata = false;
            x.SaveToken = true;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(key),
                ValidateIssuer = false,
                ValidateAudience = false
            };
        });

        // configure DI for application services
        services.AddScoped<IUserData, UD>();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

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

여기 내 출시 설정이 있습니다

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:60850",
      "sslPort": 44372
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "Executable",
      "launchBrowser": true,
      "launchUrl": "api/values",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "Kestrel": {
      "commandName": "Executable",
      "executablePath": ".\\WebApi.exe",
      "applicationUrl": "http://localhost:5050"
    }
  }
}

나는 만지작 거렸다

app.UsePathBase("/"); 

또는

app.UsePathBase("http://localhost:5050") 

그러나 후자의 경우 오류 메시지는 값이 /로 시작해야한다는 것입니다.

나는 전에이 문제에 대해 다른 불평을 보았지만 그들의 해결책이 저에게 효과가 없었습니다. 나는 왜 이것을 얻습니까?

간단히 Ged

UseUrls(...)메소드는 URL ;이 쉼표가 아닌 세미콜론으로 구분 될 것으로 예상합니다 ,.

줄을 다음 program.cs으로 변경하십시오.

.UseUrls("http://*:5050;https://*:5051")

문서에 따르면 (강조 내) :

이러한 접근 방식을 사용하여 제공되는 값은 하나 이상의 HTTP 및 HTTPS 끝 점일 수 있습니다 (기본 인증서를 사용할 수있는 경우 HTTPS). 값을 세미콜론으로 구분 된 목록 으로 구성하십시오 (예 : "Urls": " http : // localhost : 8000; http : // localhost : 8001 ").

여기 에서 전체 문서를 볼 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

System.InvalidOperationException : 가시성을 설정할 수 없습니다.

분류에서Dev

Kestrel http 서버를 시작할 때 uv_loop_size라는 진입 점을 찾을 수 없습니다.

분류에서Dev

System.InvalidOperationException : 요청이 제출 된 후에는이 작업을 수행 할 수 없습니다.

분류에서Dev

시작 스레드가 System.InvalidOperationException을 반환합니다. 현재 SynchronizationContext를 TaskScheduler로 사용할 수 없습니다.

분류에서Dev

unetbootin을 시작할 수 없습니다.

분류에서Dev

dovecot을 시작할 수 없습니다.

분류에서Dev

pidgin을 시작할 수 없습니다.

분류에서Dev

unetbootin을 시작할 수 없습니다.

분류에서Dev

pidgin을 시작할 수 없습니다.

분류에서Dev

dovecot을 시작할 수 없습니다.

분류에서Dev

postgresql을 시작할 수 없습니다.

분류에서Dev

Hadoop을 시작할 수 없습니다.

분류에서Dev

MySQL을 시작할 수 없습니다.

분류에서Dev

System.InvalidOperationException : '클라이언트'27MarchTemplate.Client '를 찾을 수 없습니다.'

분류에서Dev

System.InvalidOperationException : 컬렉션이 수정되었습니다. 양식을 닫을 때 열거 작업이 실행되지 않을 수 있습니다.

분류에서Dev

Docker로 작업을 시작할 수 없습니다.

분류에서Dev

lightdm을 시작할 수 없지만 시작할 수 있습니다.

분류에서Dev

lightdm을 시작할 수 없지만 시작할 수 있습니다.

분류에서Dev

암시 적으로 'System.Linq.IQueryable 형식을 변환 할 수 없습니다.

분류에서Dev

암시 적으로 'system.datetime'유형을 변환 할 수 없습니다.

분류에서Dev

암시 적으로 'string'을 'System.TypeCode'로 변환 할 수 없습니다.

분류에서Dev

JSON 값을 System.DateTime으로 변환 할 수 없습니다.

분류에서Dev

System.Text.Json.JsonException : JSON 값을 변환 할 수 없습니다.

분류에서Dev

'System.Random'모듈을로드 할 수 없습니다.

분류에서Dev

system.string은 blob을 바인딩 할 수 없습니다.

분류에서Dev

System.Net.WebException을 해결할 수 없습니다.

분류에서Dev

문자열을 System.Uri로 변환 할 수 없습니다.

분류에서Dev

System.NullReferenceException을 극복 할 수 없습니다.

분류에서Dev

System.NullReferenceException을 극복 할 수 없습니다.

Related 관련 기사

  1. 1

    System.InvalidOperationException : 가시성을 설정할 수 없습니다.

  2. 2

    Kestrel http 서버를 시작할 때 uv_loop_size라는 진입 점을 찾을 수 없습니다.

  3. 3

    System.InvalidOperationException : 요청이 제출 된 후에는이 작업을 수행 할 수 없습니다.

  4. 4

    시작 스레드가 System.InvalidOperationException을 반환합니다. 현재 SynchronizationContext를 TaskScheduler로 사용할 수 없습니다.

  5. 5

    unetbootin을 시작할 수 없습니다.

  6. 6

    dovecot을 시작할 수 없습니다.

  7. 7

    pidgin을 시작할 수 없습니다.

  8. 8

    unetbootin을 시작할 수 없습니다.

  9. 9

    pidgin을 시작할 수 없습니다.

  10. 10

    dovecot을 시작할 수 없습니다.

  11. 11

    postgresql을 시작할 수 없습니다.

  12. 12

    Hadoop을 시작할 수 없습니다.

  13. 13

    MySQL을 시작할 수 없습니다.

  14. 14

    System.InvalidOperationException : '클라이언트'27MarchTemplate.Client '를 찾을 수 없습니다.'

  15. 15

    System.InvalidOperationException : 컬렉션이 수정되었습니다. 양식을 닫을 때 열거 작업이 실행되지 않을 수 있습니다.

  16. 16

    Docker로 작업을 시작할 수 없습니다.

  17. 17

    lightdm을 시작할 수 없지만 시작할 수 있습니다.

  18. 18

    lightdm을 시작할 수 없지만 시작할 수 있습니다.

  19. 19

    암시 적으로 'System.Linq.IQueryable 형식을 변환 할 수 없습니다.

  20. 20

    암시 적으로 'system.datetime'유형을 변환 할 수 없습니다.

  21. 21

    암시 적으로 'string'을 'System.TypeCode'로 변환 할 수 없습니다.

  22. 22

    JSON 값을 System.DateTime으로 변환 할 수 없습니다.

  23. 23

    System.Text.Json.JsonException : JSON 값을 변환 할 수 없습니다.

  24. 24

    'System.Random'모듈을로드 할 수 없습니다.

  25. 25

    system.string은 blob을 바인딩 할 수 없습니다.

  26. 26

    System.Net.WebException을 해결할 수 없습니다.

  27. 27

    문자열을 System.Uri로 변환 할 수 없습니다.

  28. 28

    System.NullReferenceException을 극복 할 수 없습니다.

  29. 29

    System.NullReferenceException을 극복 할 수 없습니다.

뜨겁다태그

보관