ASP.NET核心2.0 Web API-can';不能在IIS上发布

ASP.NET核心2.0 Web API-can';不能在IIS上发布,iis,asp.net-core,asp.net-core-2.0,asp.net-core-webapi,Iis,Asp.net Core,Asp.net Core 2.0,Asp.net Core Webapi,我有一个ASP.NET Core 2.0 WebAPI,现在我想将其部署到IIS服务器 在调试模式下,我可以通过邮递员发出请求,得到正确的结果 但是,当我将web api部署到iis服务器时,我无法调用web api服务。所以它有点不正常 我遵循了几条指南,下面是其中一条: 它仍然不起作用 ProductController.cs: using System; using System.Collections.Generic; using System.Linq; using System.T

我有一个ASP.NET Core 2.0 WebAPI,现在我想将其部署到IIS服务器

在调试模式下,我可以通过邮递员发出请求,得到正确的结果

但是,当我将web api部署到iis服务器时,我无法调用web api服务。所以它有点不正常

我遵循了几条指南,下面是其中一条:

它仍然不起作用

ProductController.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CodeBaseFx;
using FurnitureContract.Services;
using FurnitureContract.Services.Model;
using FurnitureContract.Services.Service;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace FurnitureContract.WebApi.Controllers
{
    [Produces("application/json")]
    [Route("api/Product")]
    public class ProductController : Controller
    {
        private IProductService service = ServiceFacade.ProductService;

        public ProductController(IProductService service)
        {
            this.service = service;
        }

        [HttpGet("GetById")]
        public IEnumerable<Product> GetByProductId(string productId)
        {
            return service.GetByProductId(productId);
        }

        [HttpGet("GetByDesc")]
        public IEnumerable<Product> GetByProductDesc(string productDesc, string language)
        {
            var lng = CoreFacade.Language.GetLanguage(language);
            return service.GetByProductDesc(productDesc, lng);
            //return service.GetByProductDesc(productDesc, LanguageType.it);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
使用CodeBaseFx;
使用家具合同。服务;
使用FurnitureContract.Services.Model;
使用家具合同.服务.服务;
使用Microsoft.AspNetCore.Http;
使用Microsoft.AspNetCore.Mvc;
命名空间FurnitureContract.WebApi.Controllers
{
[产生(“应用程序/json”)]
[路线(“原料药/产品”)]
公共类ProductController:控制器
{
私有IPProductService=ServiceFacade.ProductService;
公共产品控制器(IPProductService服务)
{
服务=服务;
}
[HttpGet(“GetById”)]
公共IEnumerable GetByProductId(字符串productId)
{
return service.GetByProductId(productId);
}
[HttpGet(“GetByDesc”)]
公共IEnumerable GetByProductDesc(字符串productDesc,字符串语言)
{
var lng=coremacade.Language.GetLanguage(语言);
返回服务。GetByProductDesc(productDesc,lng);
//return service.GetByProductDesc(productDesc,LanguageType.it);
}
}
}
Program.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace FurnitureContract.WebApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();
    }
}
使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore;
使用Microsoft.AspNetCore.Hosting;
使用Microsoft.Extensions.Configuration;
使用Microsoft.Extensions.Logging;
命名空间FurnitureContract.WebApi
{
公共课程
{
公共静态void Main(字符串[]args)
{
BuildWebHost(args.Run();
}
公共静态IWebHost BuildWebHost(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseKestrel()
.UseContentRoot(目录.GetCurrentDirectory())
.Useii整合()
.UseStartup()
.Build();
}
}
我还在IIS服务器上安装了Microsoft.NET Core Windows服务器托管捆绑包文件

下面是我的部署步骤:

  • 我已将项目发布到一个文件夹,然后将其复制到目标文件夹上的web服务器
  • 我创建了一个没有托管代码设置的应用程序池
  • 然后,我创建了一个新的应用程序,并选择了上面的应用程序池,并设置了web api文件夹的物理路径
  • 当我试图通过邮递员提出请求时,我没有得到任何结果


    有人能帮忙吗?

    我已经解决了这个问题:

  • 我忘记打开防火墙上的特定端口
  • 我在服务器上遇到问题,因为我配置的应用程序池没有与数据库通信的正确权限

  • 我已经解决了这个问题:

  • 我忘记打开防火墙上的特定端口
  • 我在服务器上遇到问题,因为我配置的应用程序池没有与数据库通信的正确权限