• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

支持的操作系统

以下操作系统的支持:

  • Windows 7和更新
  • Windows Server 2008 R2和新†

ASP.NET在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从命令提示符拿起改变系统路径。

笔记

随着ASP.NET核心模块共享配置IIS

安装Web部署Visual Studio发布时

应用程序配置

使iisintegration组件

ASP.NET的核心模块:

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

在ASP.NET核心举办

IIS选项

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

。为了防止SDK转化web.config文件,添加<IsTransformWebConfigDisabled>属性和设置项目文件true

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

创建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另一个身份,确认新的身份具有所需的权限来访问应用程序的文件夹,数据库,和其他所需资源。

部署应用程序

部署工具是用于部署的推荐机制。Web部署方案如下。

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

Web部署Visual Studio

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

Web部署Visual Studio外

Web部署工具

Web部署方案

发布样品

浏览网站

警告

数据保护

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

  • 一个网站托管在IIS。
  • 数据保护堆栈没有被配置为存储在持久性存储的钥匙圈。

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

  • 所有形式的身份验证令牌无效。
  • 用户需要登录他们的下一个请求。
  • 你的任何数据保护密钥环不再保护。

警告

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

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

  • 运行PowerShell脚本创造合适的注册表项(例如,.\Provision-AutoGenKeys.ps1 DefaultAppPool)。本店键在注册表中,使用DPAPI与机宽重点保护。
  • 配置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.
  • 调整你的应用程序代码使用文件系统的一个关键环店。使用X509证书来保护密钥环,确保它是一个受信任的证书。如果它是一个自签名的证书,你必须把它放在受信任的根存储。

当使用IIS在Web场:

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

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

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

配置数据保护详情

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.

三.数据保护机宽政策

数据保护更详细的文档

子应用程序配置

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配置IIS

Environment Variables <environmentVariables>在IIS的参考文档主题。

Web.config配置部分of

配置

应用程序池

当承载多个网站在一个单一的系统,你应该将应用程序互相在自己的应用程序池运行每个应用程序。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部署问题:

  • 研究浏览器输出
  • 检查系统应用日志事件查看器
  • 使stdout登录中.这个ASP.NET的核心模块日志提供的路径找到stdoutlogfile属性的<aspNetCore>元素web.config。在属性值提供的路径文件夹必须在部署存在。您还必须设置stdoutLogEnabled="true"。。。。。。。这是使用的应用程序。Microsoft.NET.Sdk.WebSDK创建web.config默认的文件stdoutlogenabled设置,所以你必须手动提供web.config文件或修改文件以使stdout登录中.

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

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

环境变量子元素aspnetcore

登录中更多信息

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

小贴士

nuget.org,把它添加到你的系统路径,并执行nuget locals all -clear从命令提示符。你也可以执行dotnet NuGet当地人都清晰从命令提示符命令没有获得nuget.exe

常见的错误

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

安装程序无法获得VC Redistributable

  • 安装程序:0x80072efd或0x80072f76 -未指定的错误

  • 安装日志exception†:错误0x80072efd或0x80072f76:未能执行EXE包

    †日志位于C:\用户\用户\ AppData \ { }地方\温度\ dd_dotnetcorewinsvrhosting__ { }日志的时间戳。

故障排除:

  • 如果系统不能访问Internet的主机捆绑在安装服务器,这发生异常时,安装程序无法获得微软Visual C++ 2015可再发行。你可以从中获得一个安装程序微软下载中心。如果安装失败,您可能没有收到。NET的核心运行时需要主机框架依赖部署(FDD)。如果你打算举办一个FDD,确认运行安装程序及特点。你可以从获得的运行安装程序网络下载。安装运行后,重新启动系统或通过执行重启IIS网站是/ Y然后启动W3SVC从命令提示符

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

  • 应用程序日志:该DLL模块C:\ Windows\System32 inetsrv \ aspnetcore.dll无法加载。数据是错误。

故障排除:

  • 在非操作系统文件C:\ Windows \ Syswow64 \ inetsrv目录不在操作系统升级后保存。如果你有ASP.NET的核心模块在操作系统升级后再尝试运行在32位模式的任何apppool OS升级安装后,您遇到此问题。一个操作系统升级后,修复ASP.NET核心模块。看到安装.NET核心Windows服务器托管束。选择修复当您运行安装程序

平台以摆脱冲突

  • 浏览器502.5 HTTP错误处理功能

  • 应用程序日志:Application 'MACHINE/WEBROOT/APPHOST/MY_APPLICATION' with physical root 'C:{PATH}' failed to start process with commandline '"C:\{PATH}\my_application.{exe|dll}" ', ErrorCode = '0x80004005 : ff.

  • ASP.NET的核心模块日志:未处理的例外:system.badimageformatexception:未能加载文件或程序集“my_application DLL”。试图加载格式不正确的程序。

故障排除:

  • 确认应用程序运行在本地红隼。一个过程的故障可能会在应用程序是一个问题的结果。有关更多信息,参见故障排除技巧

  • 确认你没有设置<PlatformTarget>在你的。csproj以消除冲突。例如,不指定<PlatformTarget>属于x86出版与消除win10-x64,或者使用DotNet发布C释放R win10-x64或通过设置<RuntimeIdentifiers>在你的。csprojwin10-x64。该项目发布时没有警告或错误但不具有上述异常对系统登录。

  • 如果发生此异常的Azure应用程序的部署升级时应用和部署新的组件,从现有部署手动删除所有文件。挥之不去的不兼容的组件可能会导致System.BadImageFormatException例外部署升级应用程序时。

URI端点错误或停止网站

  • 浏览器_ _ refused连接错误

  • 应用程序日志:没有进入

  • ASP.NET的核心模块日志:日志文件不能创建

故障排除:

  • 确认你使用了正确的URI端点的应用。检查你的绑定。

  • 确认IIS网站不在停止状态

corewebengine或W3SVC服务器功能残疾

  • 异常的:IIS 7 corewebengine和W3SVC功能必须安装使用ASP.NET核心模块。

故障排除:

  • 确认您已启用适当的作用和特点。看到IIS配置

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

  • 浏览器没有权限访问此网站-拒绝访问-或-403.14禁用Web服务器的配置不列出该目录的内容。

  • 应用程序日志:没有进入

  • ASP.NET的核心模块日志:日志文件不能创建

故障排除:

  • 检查IIS网站基本设置和物理应用程序文件夹。确认应用程序在文件夹在IIS网站物理路径

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

  • 浏览器500.19内部服务器错误请求的页不能因为该页的相关配置数据无效访问。

  • 应用程序日志:没有进入

  • ASP.NET的核心模块日志:日志文件不能创建

故障排除:

  • 确认您已经启用适当的角色。看到IIS配置

  • 检查程序&#38;功能特色并确认微软ASP.NET的核心模块已安装。if the微软ASP.NET的核心模块不在已安装的程序列表,安装模块。看到安装.NET核心Windows服务器托管束

  • 确保Application Pool&#62;过程模型&#62;身份是集applicationpoolidentity或自定义的身份来访问应用程序的部署文件夹的权限。

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

  • 浏览器502.5 HTTP错误处理功能

  • 应用程序日志:Application 'MACHINE/WEBROOT/APPHOST/MY_APPLICATION' with physical root 'C:\{PATH}' failed to start process with commandline '".\my_application.exe" ', ErrorCode = '0x80070002 : 0.

  • ASP.NET的核心模块日志:日志文件创建但空

故障排除:

  • 确认应用程序运行在本地红隼。一个过程的故障可能会在应用程序是一个问题的结果。有关更多信息,参见故障排除技巧

  • 检查路径属性上<aspNetCore>元素web.config确认它的dotnet一个框架依赖部署(FDD)或我_ application.exe。\一个独立的部署(SCD)。

  • 一个FDD,dotnet.exe不可通过的路径设置。确认C:\程序文件\ DOTNET *存在系统路径设置。

  • 一个FDD,dotnet.exe不可用于应用程序池的用户身份。确认用户身份访问的apppoolC:\程序文件\ dotnet目录确认没有否认配置为对用户身份的apppool规则C:\程序文件\ dotnet和应用程序目录

  • 你可能已经部署了FDD和安装.NET核心不重新启动IIS。重新启动服务器或通过执行重启IIS网站是/ Y然后启动W3SVC从命令提示符

  • 你可能已经部署了FDD不安装在主机系统的核心运行时网。如果你尝试部署FDD和没有安装.NET核心运行时,运行NET Windows核心服务器安装包在系统。看到安装.NET核心Windows服务器托管束。如果你试图安装.NET核心运行时对系统没有连接到互联网,从获得运行时网络下载运行主机安装包安装ASP.NET核心模块。通过重新启动系统或重新启动IIS执行完成安装网站是/ Y然后启动W3SVC从命令提示符

  • 你可能已经部署了FDD和安装.NET核心无需重新启动系统/ IIS。重新启动系统或通过执行重启IIS网站是/ Y然后启动W3SVC从命令提示符

  • 你可能已经部署了FDD和微软的Visual C 2015 Redistributable(x64)系统中未安装。你可以从中获得一个安装程序微软下载中心

Incorrect arguments of <aspNetCore> element

  • 浏览器502.5 HTTP错误处理功能

  • 应用程序日志:Application 'MACHINE/WEBROOT/APPHOST/MY_APPLICATION' with physical root 'C:\{PATH}' failed to start process with commandline '"dotnet" .\my_application.dll', ErrorCode = '0x80004005 : 80008081.

  • ASP.NET的核心模块日志:执行应用程序不存在:“my_application DLL的路径。

故障排除:

  • 确认应用程序运行在本地红隼。一个过程的故障可能会在应用程序是一个问题的结果。有关更多信息,参见故障排除技巧

  • 检查争论属性上<aspNetCore>元素web.config确认它是(一个)我的_ application.dll。”一个框架依赖部署(FDD);或(b)不存在,空字符串(arguments=""),或一组应用程序的参数(arguments="arg1, arg2, ...")为独立部署(SCD)。

失踪的.NET Framework版本

  • 浏览器502.3错误网关-有一个连接错误而试图请求路由。

  • 应用程序日志:ErrorCode = Application 'MACHINE/WEBROOT/APPHOST/MY_APPLICATION' with physical root 'C:\{PATH}' failed to start process with commandline '"dotnet" .\my_application.dll', ErrorCode = '0x80004005 : 80008081.

  • ASP.NET的核心模块日志:缺少方法,文件,或装配的例外。的方法,文件,或装配中的异常指定一个.NET框架的方法,文件,或装配。

故障排除:

  • 安装.NET Framework的版本被从系统。

  • 一个框架依赖部署(FDD),确认您已正确安装在系统的运行。如果你升级一个项目从1.1到2,部署到主机系统,和接受这一例外,确保你安装2框架对主机系统。

停止应用程序池

  • 浏览器503服务不可用

  • 应用程序日志:没有进入

  • ASP.NET的核心模块日志:日志文件不能创建

故障检修

  • 确认应用程序池不在停止状态

IIS集成中间件没有实现

  • 浏览器502.5 HTTP错误处理功能

  • 应用程序日志:Application 'MACHINE/WEBROOT/APPHOST/MY_APPLICATION' with physical root 'C:\{PATH}' created process with commandline '"C:\{PATH}\my_application.{exe|dll}" ' but either crashed or did not reponse or did not listen on the given port '{PORT}', ErrorCode = '0x800705b4'

  • ASP.NET的核心模块日志:日志文件的创建和显示正常运行。

故障检修

  • 确认应用程序运行在本地红隼。一个过程的故障可能会在应用程序中是一个问题的结果。有关更多信息,参见故障排除技巧

  • 确认你已经正确地引用IIS集成中间件通过调用useiisintegration()。在应用程序的方法webhostbuilder()(ASP.NET核心1。x)或使用CreateDefaultBuilder方法(ASP.NET核心×)。See在ASP.NET核心举办详情

Sub-application includes a <handlers> section

  • 浏览器HTTP错误500.19 -内部服务器错误

  • 应用程序日志:没有进入

  • ASP.NET的核心模块日志:日志文件的创建和显示正常运行的应用程序的根。日志文件不为子应用。

故障检修

  • 确认子应用程序的web.config文件不包括<handlers>区域

应用程序配置的一般问题

  • 浏览器502.5 HTTP错误处理功能

  • 应用程序日志:Application 'MACHINE/WEBROOT/APPHOST/MY_APPLICATION' with physical root 'C:\{PATH}' created process with commandline '"C:\{PATH}\my_application.{exe|dll}" ' but either crashed or did not reponse or did not listen on the given port '{PORT}', ErrorCode = '0x800705b4'

  • ASP.NET的核心模块日志:日志文件创建但空

故障检修

  • 这个一般的异常表示过程启动失败,最有可能是由于应用程序配置问题。指目录结构确认你的应用程序的部署,文件和文件夹是恰当的,你的应用程序的配置文件,包含你的应用程序和环境的正确设置。有关更多信息,参见故障排除技巧

资源


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
使用asp.netmvc部分视图渲染html发布时间:2022-07-10
下一篇:
Asp.net 2.0 中将网站首页生成静态页的一个比较好的方法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap