ASP.NET Core Web服务具有localhost功能,但在IIS中会产生404 Not Found错误

时间:2019-03-26 16:34:20

标签: c# angular iis asp.net-core

我的ASP.NET Core Web服务有问题。

我在Angular项目中需要JWT进行身份验证。这就是为什么我提供了一项服务,需要检查用户是否被授权。我使用.NET Core制作,因为我有IIS服务器。

当我使用“ dotnet run”在本地运行它时,我可以在本地发出get或put请求。我还通过使用Payload(带有2个键值对的JSON)发出POST请求,也在Google Chrome的YARC插件中对其进行了测试。

我将服务上载到IIS服务器中,启动了该服务,并再次在本地机器中的YARC插件上提供了URL(这次是IIS所在的服务器的域),以进行具有相同负载的POST请求。它给了我404- Not Found错误。

功能性本地网址为:http://localhost:5000/api/auth/login

IIS的URL:http://myIISMachine:7471/api/auth/login(端口号也位于launchSettings.json文件中)

我的Startup.cs文件中的

ConfigureServices函数:

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服务器中的设置有关?你能帮我吗?

0 个答案:

没有答案