我有一个在IIS 7.5下运行的ASP.NET网站很棒.
现在我们正在尝试运行IIS 10的新Windows 10服务器.将相同的网站复制到新服务器并尝试打开它:
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
...
Error Code 0x8007000d
...
Config Source:
-1:
0:
Run Code Online (Sandbox Code Playgroud)
我查了一下错误代码:
原因:出现此问题的原因是ApplicationHost.config文件或Web.config文件包含格式错误的XML元素.
解决方案:从ApplicationHost.config文件或Web.config文件中删除格式错误的XML元素.
但是那个web.config文件已经工作多年了.什么也没有变.所以我认为"格式错误的xml"消息是一个红色的鲱鱼,并且必须有一些我缺少的其他设置.
有任何想法吗?
我已经为IIS 7.x配置了ISAPI DLL多年,但这是我第一次尝试使用Windows 10,但它无法正常工作,我找不到任何有关如何成功完成的说明.我在Windows 10 Professional中工作,并安装了IIS和支持技术.
这是我过去所做的.首先,我打开Internet Information Services Manager控制台.然后,我选择默认Web站点并打开Handler Mappings.我在"禁用"部分右键单击"ISAPI-dll",选择"编辑功能权限",然后在"执行"旁边选中复选标记.
由于我的ISAPI DLL是32位DLL,并且我运行的是Windows 10 64位专业版,因此我在"连接"窗格中选择"应用程序池",右键单击"DefaultAppPool",然后选择"高级设置",然后将"启用32位应用程序"设置为真正.
最后,我打开ISAPI和CGI限制小程序.然后,我右键单击ISAPI和CGI限制窗格并选择编辑功能设置,然后在"允许未指定的ISAPI模块"旁边放置复选标记.
Handler Mappings applet不再具有禁用的ISAPI-dll条目.但是,打开Handler Mappings小程序后,我可以选择编辑功能权限,并在Execute旁边放置一个复选标记.我已经能够在默认应用程序池中允许32位应用程序,但ISAPI和CGI限制小程序无处可寻.
最终的结果是,尽管我已经成功执行了如上所述的配置,但仍然无法运行我的ISAPI DLL.我已将DLL放在与Windows 7安装程序相同的位置(在c:\ inetpub\wwwroot\appfolder下),并使用相同的URL.它在Windows 7中运行,但在Windows 10中不运行.
如何在Windows 10中配置IIS以运行此ISAPI DLL?
我正在尝试托管 ASP.net Core WebAPI,就像 Microsoft 文档告诉我的那样:Hosting in ASP.NET Core
我在 Windows Server 2016 上运行 IIS 10,其中安装了 Web Deploy 3.6、.Net Core Runtime 2.0.7 和 .NET Core Server Hosting Bundle。
Web API 配置如下:
程序.cs:
public static IWebHost BuildWebHost(string[] args) {
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.UseKestrel(opt => {
opt.Listen(IPAddress.Loopback, 4000);
})
.UseIISIntegration()
.Build();
}
Run Code Online (Sandbox Code Playgroud)
网络配置:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Agent.DuZu.Web.dll" stdoutLogEnabled="true" …Run Code Online (Sandbox Code Playgroud) 我在服务器系统中托管了我的Angular 4应用程序,最初我遇到了404错误所以我在生产构建文件夹中添加了一个web.config文件.现在我收到了这个错误.
但是应用程序在我的本地系统上正常运行,它会抛出服务器系统的错误.我尝试了一些在win7上运行的其他系统,win10但是它没有运行总是显示500.19的错误.
我花了好几个小时来解决这个问题,在stackoverflow中引用了与我的帖子相关的所有帖子,但没有任何工作.
任何人都可以帮我解决这个问题.
错误页面:
Web.Config中
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="AngularJS Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/eCommerceWebsite" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud) 更新1
有了@Priyesh Kumar的反馈,我使用了网站根文件夹中的以下命令(该网站带有*.csproj的文件夹).这很有效.然后我将"win10-x64"内容文件复制到c:\ www\sigex.com.
dotnet publish -c Release -r win10-x64 --self-contained
Run Code Online (Sandbox Code Playgroud)
我现在遇到了一些不同的问题,但会修复它们,然后回复解决方案.
原帖
嗨,我正在尝试将我的网站本地发布到IIS(我在IIS管理器中创建的网站).我在visual studio中使用右键单击发布选项.
在IIS管理器中,我的设置是;
对于应用程序池,我有以下内容
当我单击"发布"并选择"IIS,FTP等"并单击"发布".然后我将设置输入为"发布方法:文件系统".我将目标位置设置为"C:\ www\sigex.com".我在"c:\ windows\system32\drivers\etc\hosts"文件中使用"127.0.0.1 sigex.com"在本地使用此域(工作正常).
发布设置如下所示;
设置发布配置后,我得到以下警告框;
tmp文件里面有以下内容;
03/06/2018 17:10:54
System.AggregateException: One or more errors occurred. ---> System.Exception: Build failed. Check the Output window for more details.
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Microsoft.VisualStudio.Web.Publish.PublishService.VsWebProjectPublish.<>c__DisplayClass41_0.<PublishAsync>b__2()
at System.Threading.Tasks.Task`1.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task …Run Code Online (Sandbox Code Playgroud) 当我访问发布到本地IIS的应用程序时出现此错误:
HTTP错误500.19-内部服务器错误无法访问请求的页面,因为该页面的相关配置数据无效。
我的web.config非常简单:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\TreesOnMars.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 14bfa9ba-0bd6-4ae2-a6f4-6e3e91d35263-->
Run Code Online (Sandbox Code Playgroud)
有什么事吗 我尝试授予所有用户读取我的c:\inetpub\wwwroot文件夹的权限... web.config中没有任何明显的错误!我在这个问题上尝试了一些解决方案,但是它们没有用...
我有一个 Asp.net API 网站,它执行自定义客户端证书验证。在 IIS 10 上托管此网站时,当我调用 API 时,我会从失败的请求日志中获取以下信息。
证书链已处理,但终止于信任提供者不信任的根证书。
我的 web.config 有
<configuration>
<system.webServer>
<access sslFlags="Ssl, SslRequireCert" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
在 applicationHost.config 我有
<section name="access" overrideModeDefault="Allow" />
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?如何将 IIS 配置为仅传递证书而不验证它?
我想要这样做的原因是,这是一个测试环境,我想信任所有使用自签名证书调用我的 API 的客户端。我将在 API 内部验证证书。
注意:我在 Azure AppService 上托管相同的网站,并将“传入客户端证书”设置为ON。它就像一个魅力。那么,当我将其托管在我的机器 IIS 上时有什么区别?
ERR_CONNECTION_RESET当我的ASP.NET服务器尝试以错误答复时,我正在使用Chrome。
通常,我可以通过在日志文件中找到有关服务器错误的信息,但是那里什么也没有。
在响应上运行调试器似乎表明一切正常,除了最后,Chrome告诉我连接已重置。
这是处理异常处理的代码:
try
{
...
}
catch (ArgumentException e)
{
Response.StatusCode = 400;
Response.StatusDescription = e.Message;
return new ContentResult {Content = "" };
}
Run Code Online (Sandbox Code Playgroud)
Chrome net::ERR_CONNECTION_RESET在控制台中显示了我。
使用Fiddler,我收到错误消息 [Fiddler] ReadResponse() failed: The server did not return a complete response for this request. Server returned 0 bytes.
如果我在IIS中启用了失败的请求跟踪,然后打开生成的xml文件
GENERAL_FLUSH_RESPONSE_END
BytesSent
0
ErrorCode
The parameter is incorrect.
(0x80070057)
Run Code Online (Sandbox Code Playgroud)
我花了几个小时尝试调试它,但运气不佳。
我使用 VS 2022 使用 .Net Core 3.1 创建了一个 Web API
没什么特别的,这只是我们使用带有天气控制器的模板获得的简单 API,我在其中添加了 Swagger。从 VS -> IIS Express 一切正常。
尝试在我的开发系统上本地部署到 IIS。
不工作。
首先是从 IIS 浏览时禁止的页面:
然后尝试访问 swagger:
从 VS 发布设置
未更改“管理应用程序”中的默认值,它们设置为 Http 的端口 80 和 Https 的端口 443。
出于好奇,我从发布文件夹中运行了可执行文件,并从那里获取了 URL。这有效并且显示了 swagger 页面。

所以要么是端口,要么是其他我无法弄清楚的东西。感谢任何使这项工作顺利进行的线索和指导。
提前致谢。
试图根据对问题的初步反馈稍微转移焦点。
在 DevOps 发布管道中,使用管理 IIS 网站任务,尝试使用通配符证书添加 https 绑定。证书位于本地计算机的证书存储区(使用 mmc 检查 -> 添加管理单元“证书”,选择“计算机帐户”和“本地计算机”),在文件夹“Web Hosting\Certificates”中。我认为这是从 IIS 中添加时它们最终的位置。
但是当运行管道时,它失败了,日志中有这个条目:
SSL Certificate add failed, Error: 1312
A specified logon session does not exist. It may already have been terminated.
Run Code Online (Sandbox Code Playgroud)
任务发出的实际命令行是(我匿名的):
"netsh" http add sslcert hostnameport=www.mydomain.se:443 certhash=*** appid={xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} certstorename=MY
Run Code Online (Sandbox Code Playgroud)
正如评论中所指出的,certstorename显然应该为参数分配一个不同的值。美好的。
但是任务属性页面没有提供此参数的设置,那么我该如何更改它呢?我应该把它改成什么?
如果无法在任务中更改它,我应该将证书移到哪里以使任务能够找到它的值certstorename=MY?我试图找到并理解有关此的文档,但失败了,可能是由于缺乏关于证书存储的基本知识和相关术语。
ssl-certificate netsh iis-10 azure-devops azure-pipelines-release-pipeline
iis-10 ×10
asp.net ×4
iis ×3
asp.net-core ×2
c# ×2
.net ×1
angular ×1
azure-devops ×1
azure-pipelines-release-pipeline ×1
hosting ×1
iis-7.5 ×1
isapi ×1
netsh ×1
typescript ×1
windows-10 ×1
xml ×1