ASP.NET Core 的Windows和IIS宿主(自动翻译记录)

时间:2017-11-19 22:16:36   收藏:0   阅读:2840

https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x

支持的操作系统

以下操作系统的支持:

?概念,本文档中描述的IIS配置也适用于托管ASP.NET核心应用纳米服务器IIS,而是指ASP.NET在IIS服务器上的纳米核心为特定的指令

HTTP.SYS服务器(原名weblistener)与IIS赢得一个反向代理配置不工作。你必须使用该服务器

IIS配置

使Web服务器(IIS)建立角色和角色服务

Windows桌面操作系统

引导到控制面板>程序>程序和功能>打开或关闭Windows特性(屏幕左侧)。打开组互联网信息服务和网站管理工具。检查箱IIS管理控制台。检查箱万维网服务。接受默认的特征万维网服务或自定义IIS功能以满足您的需要。

技术分享图片

Windows服务器操作系统

服务器操作系统,使用添加角色和功能向导通过管理菜单或链接服务器管理器。上服务器角色步,检查箱Web服务器(IIS)

技术分享图片

上角色服务步,选择IIS角色服务你的欲望或接受服务提供的默认角色。

技术分享图片

通过进行确认步安装Web服务器角色和服务。服务器IIS重启不安装Web服务器(IIS)作用后需要。

安装.NET核心Windows服务器托管束

    1. 安装NET的核心Windows服务器托管束。在主机系统。捆绑安装.NET核心运行时,.NET核心库,和ASP.NET的核心模块。该模块创建IIS和红隼服务器之间的反向代理。如果系统没有连接互联网,获取和安装微软Visual C++ 2015可再发行在安装.NET核心Windows服务器托管束。

    2. 重新启动系统或执行网站是/ Y然后启动W3SVC从命令提示符拿起改变系统路径。

笔记

如果你使用IIS共享配置,看随着ASP.NET核心模块共享配置IIS

安装Web部署Visual Studio发布时

如果你打算部署你的应用程序部署工具进入visual studio最新版本,安装Web部署的托管系统。安装Web部署,您可以使用Web平台安装程序(webpi)或获得一个安装程序,直接从微软下载中心。首选的方法是使用WebPI。webpi提供一个托管服务提供商独立的安装和配置。

应用程序配置

使iisintegration组件

一个典型的cs电话createdefaultbuilder开始建立一个主机CreateDefaultBuilder配置红隼作为Web服务器,使IIS集成的基本路径和端口配置ASP.NET的核心模块

C #
public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        ...

在主机的更多信息,参见在ASP.NET核心举办

IIS选项

配置iisintegration服务选项,包括服务的配置iisoptions进入configureservices

C #
services.Configure<IISOptions>(options => 
{
    ...
});
选项默认设置
AutomaticAuthentication true 如果true,认证中间件集HttpContext。用户并对仿制药的挑战。如果false,认证中间件提供了一个身份(HttpContext。用户)和响应的挑战时,明确要求的AuthenticationScheme。Windows身份验证必须启用IISautomaticauthentication功能
AuthenticationDisplayName null 设置显示给用户的登录页面的显示名称。
ForwardClientCertificate true 如果trueaspnetcore - clientcert女士请求头是目前的HttpContext.Connection.ClientCertificate填充

web.config

这个web.config配置文件是ASP.NET的核心模块。它可以提供额外的IIS配置设置。创造、转化、出版web.config是由核心网(Web SDK。Microsoft.NET.Sdk.Web)。SDK将在项目文件的顶部(。csproj),<Project Sdk="Microsoft.NET.Sdk.Web">。为了防止SDK转化web.config文件,添加<IsTransformWebConfigDisabled>属性和设置项目文件true

XML
<PropertyGroup>
  <IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>
</PropertyGroup>

如果你没有一个web.config文件在项目发布时用DotNet发布或Visual Studio发布的文件是为你出版输出。如果你有一个web.config在你的项目文件,它与正确的转化路径争论配置ASP.NET的核心模块搬到出版输出。变换不碰IIS配置设置,你已经包含在文件。

创建IIS网站

    1. 在目标IIS系统,创建一个文件夹包含应用程序发布的文件夹和文件,它描述了目录结构

    2. 在你创建的文件夹中,创建一个日志把stdout文件夹日志(如果你打算启用日志记录来解决启动问题)。如果你打算部署一个应用程序日志在有效载荷的文件夹,你可以跳过这一步。有一个开放的问题自动创建文件夹。如果你想创建的MSBuild日志文件夹为你添加以下Target到你的项目文件:

      XML
      <Target Name="CreateLogsFolder" AfterTargets="AfterPublish">
        <MakeDir Directories="$(PublishDir)logs" Condition="!Exists(‘$(PublishDir)logs‘)" />
        <MakeDir Directories="$(PublishUrl)logs" Condition="!Exists(‘$(PublishUrl)logs‘)" />
      </Target>
      
    3. 进入管理器创建一个新的网站。提供一个网站名称并设置物理路径对应用程序的部署文件夹中创建。提供封面配置和创建网站

    4. 设置应用程序池没有托管代码。ASP.NET的核心运行在一个单独的流程和管理运行。

    5. 打开添加网站窗口

      技术分享图片

    6. 配置网站

      技术分享图片

    7. 在应用程序池面板,打开编辑应用程序池用鼠标右键点击网站的应用程序池和选择窗口基本设置…从popup菜单

      技术分享图片

    8. 设置NET CLR版本到没有托管代码

      技术分享图片

      注意:设置NET CLR版本到没有托管代码是可选的。ASP.NET的核心并不依赖于加载桌面CLR。

    9. 确认过程模型具有适当权限的身份。

      如果您更改应用程序池默认身份(过程模型&#62;身份从)applicationpoolidentity另一个身份,确认新的身份具有所需的权限来访问应用程序的文件夹,数据库,和其他所需资源。

部署应用程序

部署到你创建的目标上的IIS系统文件夹中的应用。部署工具是用于部署的推荐机制。Web部署方案如下。

确认发布APP的部署没有运行。文件在发布文件夹被锁定时,应用程序运行。部署不能因为锁定的文件不能被复制。

Web部署Visual Studio

看到创建发布配置文件的Visual Studio和MSBuild,部署ASP.NET核心应用程序课题学习如何创建一个发布配置为使用Web部署。如果你的主机提供商提供一个发布配置文件或创建一个支持,下载他们的个人资料,使用Visual Studio导入发布对话框

技术分享图片

Web部署Visual Studio外

你也可以使用部署工具从命令行Visual Studio外。有关更多信息,参见Web部署工具

Web部署方案

如果你不想使用Web部署或不使用Visual Studio中,你可以用几种方法来移动应用的托管系统,如Xcopy,robocopy,或PowerShell。Visual Studio用户可以使用发布样品

浏览网站

技术分享图片

警告

NET的核心应用程序托管通过IIS和红隼服务器之间的反向代理。为了创建反向代理,这web.config文件必须在内容根路径(通常是应用程序库路径)的部署的应用程序,这是提供给IIS网站的物理路径。敏感的文件存在于应用程序的物理路径,包括子文件夹,如my_application.runtimeconfig.jsonmy_application.xml(XML文档comments),andmy_application.deps.json。这个web.config文件需要创建反向代理红隼,它阻止IIS服务这些和其他敏感文件。Therefore, it&#39;s important that theweb.config文件不小心删除重命名或从部署。

数据保护

ASP.NET的核心应用程序商店的钥匙圈内存在下列条件下:

如果密钥存储在内存中的应用程序重新启动时:

警告

数据保护是由几个ASP.NET中间件的应用,包括那些用于认证。即使你不打电话给数据保护API从您自己的代码,你应该部署脚本或代码中的配置数据保护。如果你不配置数据保护,默认情况下,密钥保存在内存中,当你的应用程序启动的丢弃。重启无效的Cookie认证中间件和用户编写的饼干必须重新登录。

配置数据保护下IIS,你必须使用下列方法之一:

当使用IIS在Web场:

1。创建一个数据保护注册表配置单元

ASP.NET的应用程序所使用的数据的保护密钥存储在注册表配置单元的应用程序的外部。坚持的钥匙,对于一个给定的应用程序,您必须创建一个应用程序的应用程序池注册表配置单元。

对于独立的IIS安装,你可以使用数据保护provision-autogenkeys.ps1 PowerShell脚本与ASP.NET的核心应用程序使用的每个应用程序池。这个脚本创建在HKLM注册表,AC LED只有工作进程帐户的特殊注册表项。关键是使用DPAPI加密在休息。

在Web场的情况下,一个应用程序可以配置为使用UNC路径来存储其数据保护的钥匙圈。默认情况下,数据保护密钥不加密。你应该确保该共享文件的权限仅限于Windows帐户运行的应用程序。此外,你可以选择保护钥匙在休息使用X509证书。你可能希望考虑一个机制允许用户上传证书证书:地方到用户的受信任的证书存储和确保他们可以在所有的机器在运行用户的应用程序。看到配置数据保护详情

2。配置IIS应用程序池加载用户配置文件

此设置在过程模型节下的高级设置为应用程序池。设置加载用户配置文件True。This stores keys under the user profile directory and protects them using DPAPI with a key specific to the user account used for the app pool.

三.数据保护机宽政策

数据保护系统的默认设置有限的支持机宽政策所有的应用程序,使用数据保护API。看到数据保护更详细的文档

子应用程序配置

子应用添加应用程序的根不在包括ASP.NET核心模块作为一个处理程序。如果你添加的模块作为子应用程序的处理程序web.config文件,你收到一个500.19(内部服务器错误)引用错误的配置文件,当你试图浏览子应用程序。下面的示例演示了一个发表的内容web.config为ASP.NET核心子应用程序文件:

XML
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

如果你打算举办一个non-asp.net核心子应用程序在ASP.NET的核心应用程序,您必须显式删除的子应用程序继承的处理web.config文件:

XML
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="aspNetCore"/>
    </handlers>
    <aspNetCore processPath="dotnet" 
      arguments=".\MyApp.dll" 
      stdoutLogEnabled="false" 
      stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

在配置ASP.NET核心模块的更多信息web.config文件,看ASP.NET的核心模块介绍话题和ASP.NET的核心模块配置参考

在web.config配置IIS

IIS的配置仍然是受<system.webServer>web.config对于那些IIS功能,适用于反向代理配置。例如,你可能有IIS在系统级配置为使用动态压缩,但你可以禁用,与一个应用程序设置<urlCompression>在应用程序的元素web.config文件更多信息,见配置参考<system.webServer>ASP.NET的核心模块配置参考使用IIS模块与ASP.NET核心。如果你需要单独的应用程序运行在独立的应用程序池设置环境变量(支持IIS 10),看appcmd.exe命令部分的Environment Variables <environmentVariables>在IIS的参考文档主题。

Web.config配置部分of

与.NETFramework应用程序配置的<system.web><appSettings><connectionStrings>,和<location>元素web.config,ASP.NET的核心应用程序配置使用其他配置提供者。有关更多信息,参见配置

应用程序池

当承载多个网站在一个单一的系统,你应该将应用程序互相在自己的应用程序池运行每个应用程序。IIS添加网站对话框的默认行为。当你提供一个网站名称,文字会自动转移到应用程序池文本框。一个新的应用程序池是用网站的名称,当你添加的网站创建。

应用程序池标识

一个应用程序池标识帐户允许你运行一个应用程序的一个独特的帐户下无需创建和管理域或本地帐户。在IIS 8,IIS辅助进程(是)创建一个新的应用程序池名称的虚拟账户并运行应用程序池中的工作进程在该账户默认情况下。在IIS管理控制台下高级设置为你的应用程序池,确保身份设置使用applicationpoolidentity如下图所示

技术分享图片

IIS管理过程创造了一个安全标识符和应用程序池的名称在Windows安全系统。资源可以利用这个身份担保;然而,这个身份并不是一个真正的用户帐户并不会显示在Windows用户管理控制台。

如果你需要给IIS辅助进程的高架访问您的应用程序,您必须修改访问控制列表(ACL)包含您的应用程序的目录。

  1. 打开Windows资源管理器,浏览目录。

  2. 右键单击目录性能

  3. 下安防选项卡,单击编辑按钮,然后添加按钮

  4. 点击位置按钮,让你选择你的系统。

  5. 进入1 apppool \ defaultapppool进入输入对象名称来选择文本框

    技术分享图片

  6. 点击检查名称按钮,然后单击好啊

    技术分享图片

你也可以通过命令提示符下使用ICACLS工具

控制台
ICACLS C:\sites\MyWebApp /grant "IIS AppPool\DefaultAppPool":F

故障排除技巧

诊断与IIS部署问题:

几种常见的错误不在浏览器中,出现应用程序日志,日志和ASP.NET的核心模块到模块startuptimelimit(默认120秒),startupretrycount(默认值:2)已通过。因此,等待一个完整的前六分钟推断模块未能启动应用程序的过程。

快速确定应用程序是否正常工作的方法之一是对红隼直接运行应用程序。如果应用程序被公布为框架依赖部署(FDD),执行dotnet my_application.dll部署文件夹中,它是IIS的物理路径的应用。如果应用程序已作为一个独立的部署(SCD),运行应用程序的可执行文件直接从命令提示符,我_ application.exe,部署文件夹中。如果红隼是监听默认的5000端口,你可以浏览应用程序http://localhost:5000/。如果应用程序的响应通常在红隼的端点地址,问题是更可能的iis-asp.net核心模块红隼配置相关的和不太可能在应用程序本身。

要确定如果IIS反向代理服务器的红隼正常工作的一种方法是执行一个简单的静态样式表,脚本文件的请求,或图像从应用程序的静态文件网站根目录使用静态文件中间件。如果应用程序可以提供静态文件但MVC视图和其他端点是失败的,问题是不可能的iis-asp.net核心模块的相关配置和红隼在应用程序本身更可能(例如MVC路由或500内部服务器错误)。

当该启动正常但后面IIS应用程序不能运行在系统上本地运行的成功后,你可以暂时添加一个环境变量web.config设置ASPNETCORE_ENVIRONMENT发展。只要你不在应用程序启动覆盖环境,这使得网页开发者例外出现时,该应用程序在系统中运行。设置环境变量ASPNETCORE_ENVIRONMENT在这种方式只推荐分期/测试系统,不接触互联网。确保你从删除环境变量web.config文件完成时。在设置环境变量的信息web.config对于反向代理,看环境变量子元素aspnetcore

在大多数情况下,应用测井协助解决应用程序或反向代理的问题。看到登录中更多信息

我们最后的故障排除技巧属于应用程序无法运行升级无论是在.NET核心SDK的开发机或包的版本在应用程序。在某些情况下,非相干的包可能会打破一个应用程序进行重大升级时。你可以解决大多数这些问题通过删除binobj在项目文件夹,清理包缓存%UserProfile%\.nuget\packages\localappdata % % nuget V3的\ \缓存,恢复项目,并确认您的系统之前部署已完全删除重新部署应用程序之前。

小贴士

一个方便的方式来清除包缓存是获得nuget.exe工具nuget.org,把它添加到你的系统路径,并执行nuget locals all -clear从命令提示符。你也可以执行dotnet NuGet当地人都清晰从命令提示符命令没有获得nuget.exe

常见的错误

以下不完整的列表错误。如果你遇到一个错误不在此列,请留下详细的错误信息,在下面的评论部分。

安装程序无法获得VC Redistributable

故障排除:

操作系统的升级将32位ASP.NET核心模块

故障排除:

平台以摆脱冲突

故障排除:

URI端点错误或停止网站

故障排除:

corewebengine或W3SVC服务器功能残疾

故障排除:

不正确的网站或应用物理路径缺失

故障排除:

不正确的作用,模块没有安装,或不正确的权限

故障排除:

不正确的路径,缺少路径变量,主包没有安装,系统重新启动IIS不,VC Redistributable没有安装,或dotnet.exe访问冲突

故障排除:

Incorrect arguments of <aspNetCore> element

故障排除:

失踪的.NET Framework版本

故障排除:

停止应用程序池

故障检修

IIS集成中间件没有实现

故障检修

Sub-application includes a <handlers> section

故障检修

应用程序配置的一般问题

故障检修

资源

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!