在IIS

时间:2017-09-08 09:35:36

标签: asp.net iis model-view-controller asp.net-core-2.0

我创建了一个.net Core 2 API并将其发布到服务器。

与普通的.Net MVC结构相比,文件结构看起来很奇怪

正常结构我熟悉

enter image description here

这是部署的.NET CORE 2 API的结构

enter image description here

现在,如果我只是尝试将该文件夹转换为类似普通ASP.NET应用程序的应用程序,那么它就不起作用了。

我在服务器上安装了the .NET Core Windows Server Hosting bundle,但我仍然遗漏了一些东西。

您在哪里添加此代码以启用IISIntegration?

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .Build();

1 个答案:

答案 0 :(得分:4)

该代码在Program.cs中,但它是默认的,所以你应该已经很好了。

ASP.NET Core文件结构 与MVC 5不同,但是一旦安装了.NET Core Hosting Runtime,它们的工作方式基本相同。将已发布的文件放在Web服务器上的目录中。然后,在IIS中设置一个站点以使用该目录。唯一略有不同的是,您需要编辑App Pool并将其设置为“No Managed Code”,而不是特定的.NET运行时。除此之外,它应该只是工作。

也就是说,如果您的屏幕截图是文件的完整列表,那么您似乎缺少一些东西。发布过程有可能在某些时候失败。尝试重新发布。

<强>背景

ASP.NET Core的工作方式与以前的ASP.NET Web应用程序根本不同。虽然您曾经拥有所有HTTP模块,而且这些模块来自机器上安装的单片.NET Runtime,但ASP.NET Core应用程序完全是独立的。 Core应用程序实际上只是一个控制台应用程序。在IIS设置中,实际的Web服务器是Kestrel,它可以捆绑到Core应用程序中,也可以从.NET Core运行时获得。 IIS用作反向代理。将请求转交给Kestrel,然后返回它从Kestrel获得的响应(因此称为“No Managed Code”)。使用IIS部署您的应用程序是一个DLL,但它也可以完全自包含并作为可执行文件进行部署。关键在于,是的,文件结构等是非常不同的,因为它从根本上以不同的方式工作。