在IIS上配置.net核心Web应用程序和webapi

时间:2019-05-28 21:01:50

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

我正在创建我的Web应用程序(WebUI)和Webapi(WebApi)。在ASP.Net中,我一直以这种方式工作,在IIS上创建Web应用程序,并生成调试文件夹的路径,而WebApi作为Webside内部的Web应用程序。在Visual Studio附加过程w3wp.exe中,我可以调试代码。我现在想达到同样的效果。

现在,我有了WebUI(Web应用程序.net Core 2.2)和WebApi(Web api .net Core 2.2)。在IIS中,添加新站点(WebUi Debug文件夹的路径),并在内部创建应用程序(WebApi Debug文件夹的路径)

我的路线

[Route("api/v1/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            return new string[] { "value1", "value2" };
        }
    }

所需效果:

http://localhost:8100/-网站

http://localhost:8100/webapi/api/v1/values-端点webapi

该网站有效,但WebApi无效。我需要同时使用site和api。当我在Visual Studio中运行Web Api时,Web Api工作正常。有什么建议或更好的主意可以同时进行调试吗?当iis中的应用程序Web API导航以发布WebAPI时,一切工作正常。

1 个答案:

答案 0 :(得分:1)

在RouteConfig.cs中尝试。

routes.MapRoute(
    name: "Home",
    url: "",
    defaults: new { controller = "Home", action = "Index" }
);

对于WebAPiConfig.cs中的api路由

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

另一方面,您可以像这样直接在Api Controller中定义路由。

[ApiController]
public class ValuesController : ControllerBase
{
    // GET api/values
    [HttpGet]
    [Route("webapi/api/v1/values")]
    public ActionResult<IEnumerable<string>> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

祝你好运。