ASP.NET Основной веб-сервис как функциональный localhost, но в IIS он выдает ошибку 404 Not Found

#c# #angular #iis #asp.net-core

#c# #angular #iis #asp.net-core

Вопрос:

У меня проблема с моим ASP.NET Основной веб-сервис.

Мне нужен был JWT для аутентификации в моем проекте Angular. Вот почему я создал службу, в которой пользователь должен быть проверен, авторизован ли он. Я сделал это с помощью .NET Core, потому что у меня есть сервер IIS.

Когда я запускаю его локально с помощью «dotnet run», я могу выполнять запросы get или put локально. Я протестировал это также в плагине YARC для Google Chrome, отправив POST-запрос с полезной нагрузкой (JSON с двумя парами ключ-значение).

Я загрузил службу на сервер IIS, запустил ее, снова передал URL (на этот раз с доменом сервера, на котором расположен IIS) плагину YARC в моей локальной машине для запроса POST с той же полезной нагрузкой. Это выдает мне ошибку 404-Not Found.

Функциональный локальный URL-адрес:http://localhost:5000/api/auth/login

URL для IIS:http://myIISMachine:7471/api/auth/login (Номер порта также указан в файле launchSettings.json)

Функция ConfigureServices в моем файле Startup.cs:

 public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
    {
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = true,
        ValidateAudience = true,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,

        ValidIssuer = "http://localhost:5000",
        ValidAudience = "http://localhost:5000",
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("MySecretKey"))
    };
});

services.AddCors(options =>
{
    options.AddPolicy("EnableCORS", builder =>
    {
        builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials().Build();
    });
});

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
  

И настройте функцию:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseHsts();
        }

        app.UseCors("EnableCORS");

        app.UseAuthentication();

        //app.UseHttpsRedirection();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "api/{controller=Home}/{action=Index}/{id?}");
        });
    }
  

Файл launchSettings.json:

 {
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false, 
"anonymousAuthentication": true, 
"iisExpress": {
  "applicationUrl": "http://localhost:7471",
  "sslPort": 44365
}
},
"profiles": {
 "IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "api/values",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},
"webapplication": {
  "commandName": "Project",
  "launchBrowser": true,
  "launchUrl": "api/values",
  "applicationUrl": "https://localhost:5001;http://localhost:5000",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
}
}
}
  

Что я здесь делаю не так? Или, может быть, это как-то связано с настройками на сервере IIS? Не могли бы вы мне помочь, пожалуйста?

Комментарии:

1. Откуда steropes-02 берется? В ваших настройках IIS отображается URL-адрес приложения с localhost .

2. Steropes — это домен моего сервера, где расположен iis.

3. Это не настройка iis. Это настройка моего веб-сервиса

4. Пожалуйста, изучите некоторые основы IIS. Привязки сайта решают, какой URL вы используете, и launchSettings.json игнорируется.

5. Я указал только номер порта (7471) в привязках. Когда я указал только домен сервера с этим номером порта в браузере (без ‘api / auth / login’), он показывает мне каталог файлов моего сервиса. Соединение со службой в iis не является проблемой. Проблема заключается в отправке запроса post (или любого другого) с помощью той же службы в iis.