Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cant get ASP.NET Core Web API to work with IIS [closed]

I'm building an ASP.NET Core MVC Web Api application and I'm trying to get it to work with IIS on my own machine. I have read different blogs and tried different things but just can't seem to get it to work... My Winform client just gets a 404 when calling the Web api. Navigating to the site roo via web browser gives me a HTTP Error 403.14 - Forbidden.

Im running Windows 10 Pro. IIS installed. ASP.NET Core Server Hosting Bundle is installed

I have added the website in IIS. Application pool is set to No Managed Code. In VS2015 I Publish the website to a local folder. I copy the content of that folder to my website folder where IIS is looking. Then I would expect it to work but it doesn't :(

Here is my setup:

web.config

  <system.webServer>
<handlers>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<directoryBrowse enabled="true"/>
<aspNetCore processPath="%LAUNCHER_PATH%"
      arguments="%LAUNCHER_ARGS%"
      stdoutLogEnabled="true"
      stdoutLogFile=".\logs\aspnetcore-stdout"
      forwardWindowsAuthToken="false" />

Program.cs

public static void Main(string[] args)
{
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseWebRoot("wwwroot")
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

StartUp.cs

        public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

appsettings.json

{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

project.json:

    {
    "dependencies": {
    "Business": "1.0.0-*",
    "Data": "1.0.0-*",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Routing": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
    "Microsoft.NETCore.App": "1.1.0"
    },
    "tools": {
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final"
      },
     "frameworks": {
     "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
  },
  "runtimeOptions": {
    "configProperties": {
      "System.GC.Server": true
    }
  },
  "publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "web.config"
    ]
  },
  "runtimes": {
    "win10-x64": {}
  },
  "scripts": {
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }
}

Website in IIS

enter image description here

Application Pool in IIS

enter image description here

Folder structure for website path enter image description here

My IIS

enter image description here

like image 456
Christian Avatar asked Jan 22 '17 01:01

Christian


1 Answers

Point IIS to MyWebAPI instead of at MyWebAPI/wwwroot. Otherwise you will receive an "HTTP Error 403.14 - Forbidden" error.

Here is a demo application on GitHub. It is using the same setup as the app in your answer is using. It worked when I published it to my IIS like this:

dotnet publish -o C:\inetpub\wwwroot\sandbox\
like image 69
Shaun Luttin Avatar answered Nov 04 '22 17:11

Shaun Luttin