Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 无法在ASP.NET Core 3.1中从进程内切换到进程外ASP.NET Core托管模式_Asp.net Core_Iis - Fatal编程技术网

Asp.net core 无法在ASP.NET Core 3.1中从进程内切换到进程外ASP.NET Core托管模式

Asp.net core 无法在ASP.NET Core 3.1中从进程内切换到进程外ASP.NET Core托管模式,asp.net-core,iis,Asp.net Core,Iis,作为测试的一部分(混合Windows auth和JWT auth),我想看看我的应用程序如何使用进程外托管模式运行。查看我发布的输出,我发现唯一的区别是aspNetCore标记中的web.config(将hostingModel设置为InProcess或OutOfProcess) 但是,当我将值从InProcess更改为OutOfProcess,并重新启动网站,查看发出请求时返回的头时,我在这两种情况下都会看到下面的头 服务器:Microsoft IIS/10.0 因此,我的结论是进程外托管不像

作为测试的一部分(混合Windows auth和JWT auth),我想看看我的应用程序如何使用进程外托管模式运行。查看我发布的输出,我发现唯一的区别是aspNetCore标记中的web.config(将hostingModel设置为InProcess或OutOfProcess)

但是,当我将值从InProcess更改为OutOfProcess,并重新启动网站,查看发出请求时返回的头时,我在这两种情况下都会看到下面的头

服务器:Microsoft IIS/10.0

因此,我的结论是进程外托管不像我自己托管时那样应该得到红隼

服务员:红隼


那么,我遗漏了什么呢?

据我所知,如果您将主机模式设置为OutOfProcess,则响应头将变成红隼。我已经在我这边创建了一个测试演示,效果很好。请发布更多关于自主机或框架依赖关系的详细信息

My web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\donet.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />
    </system.webServer>
  </location>
</configuration>


在IIS上托管时,无论进程中还是进程外,服务器头都应反映IIS(IIS是与浏览器对话的实际服务器)。在这种情况下,你永远不应该指望Kestrel。当我从头开始创建一个复制项目,保留所有默认设置(新的.NET Core 3.11 ASP.NET API项目,发布到文件夹并在我的IIS上部署)时,我看到了正确的行为。我的web.config与您的匹配(当然参数除外),我只有stdoutLogEnabled=true。我在system.webserver中有这个附加部分,因为我需要windows身份验证。有趣的是,如果我删除了安全部分,事情就开始起作用了。我的appconfig.json需要做一些额外的工作(如果配置了Kestrel,则似乎要使用它们的URL,因此我必须删除它们),但我现在将Kestrel视为服务器头,而不是IIS。