Description
Failing Test(s)
namespace Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests;
class RequestPathBaseTests
RequestPathBase_Split
RequestPathBase_WithDoubleSlashes_Split
Error Message
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Logs
(From a local build with extra logs).
Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests.RequestPathBaseTests.RequestPathBase_WithDoubleSlashes_Split(url: "/Sub/App/PathANDPathBase/PATH", expectedPathBase: "/Sub/App/PathANDPathBase", expectedPath: "/PATH")
Source: RequestPathBaseTests.cs line 80
Duration: 303 ms
Message:
Assert.Equal() Failure
Expected: 200
Actual: 500
Stack Trace:
RequestPathBaseTests.RequestPathBase_WithDoubleSlashes_Split(String url, String expectedPathBase, String expectedPath) line 85
--- End of stack trace from previous location ---
Standard Output:
| [0.005s] TestLifetime Information: Starting test RequestPathBase_WithDoubleSlashes_Split-_Sub_App_PathANDPathBase_PATH-_Sub_App_PathANDPathBase-_PATH at 2023-10-26T17:25:24
| [0.302s] Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests.RequestPathBaseTests Information: Headers:
| HTTP/1.1 500 Internal Server Error
| Cache-Control: private
| Content-Type: text/html; charset=utf-8
| Server: Microsoft-IIS/10.0
| X-Powered-By: ASP.NET
| Date: Thu, 26 Oct 2023 17:25:24 GMT
| Content-Length: 5133
| [0.305s] Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests.RequestPathBaseTests Information: Body:
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IIS 10.0 Detailed Error - 500.19 - Internal Server Error</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-serif;}
code{margin:0;color:#006600;font-size:1.1em;font-weight:bold;}
.config_source code{font-size:.8em;color:#000000;}
pre{margin:0;font-size:1.4em;word-wrap:break-word;}
ul,ol{margin:10px 0 10px 5px;}
ul.first,ol.first{margin-top:5px;}
fieldset{padding:0 15px 10px 15px;word-break:break-all;}
.summary-container fieldset{padding-bottom:5px;margin-top:4px;}
legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;}
legend{color:#333333;;margin:4px 0 8px -12px;_margin-top:0px;
font-weight:bold;font-size:1em;}
a:link,a:visited{color:#007EFF;font-weight:bold;}
a:hover{text-decoration:none;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.4em;margin:10px 0 0 0;color:#CC0000;}
h4{font-size:1.2em;margin:10px 0 5px 0;
}#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS",Verdana,sans-serif;
color:#FFF;background-color:#5C87B2;
}#content{margin:0 0 0 2%;position:relative;}
.summary-container,.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
.content-container p{margin:0 0 10px 0;
}#details-left{width:35%;float:left;margin-right:2%;
}#details-right{width:63%;float:left;overflow:hidden;
}#server_version{width:96%;_height:1px;min-height:1px;margin:0 0 5px 0;padding:11px 2% 8px 2%;color:#FFFFFF;
background-color:#5A7FA5;border-bottom:1px solid #C1CFDD;border-top:1px solid #4A6C8E;font-weight:normal;
font-size:1em;color:#FFF;text-align:right;
}#server_version p{margin:5px 0;}
table{margin:4px 0 4px 0;width:100%;border:none;}
td,th{vertical-align:top;padding:3px 0;text-align:left;font-weight:normal;border:none;}
th{width:30%;text-align:right;padding-right:2%;font-weight:bold;}
thead th{background-color:#ebebeb;width:25%;
}#details-right th{width:20%;}
table tr.alt td,table tr.alt th{}
.highlight-code{color:#CC0000;font-weight:bold;font-style:italic;}
.clear{clear:both;}
.preferred{padding:0 5px 2px 5px;font-weight:normal;background:#006633;color:#FFF;font-size:.8em;}
-->
</style>
</head>
<body>
<div id="content">
<div class="content-container">
<h3>HTTP Error 500.19 - Internal Server Error</h3>
<h4>The requested page cannot be accessed because the related configuration data for the page is invalid.</h4>
</div>
<div class="content-container">
<fieldset><h4>Detailed Error Information:</h4>
<div id="details-left">
<table border="0" cellpadding="0" cellspacing="0">
<tr class="alt"><th>Module</th><td> IIS Web Core</td></tr>
<tr><th>Notification</th><td> Unknown</td></tr>
<tr class="alt"><th>Handler</th><td> Not yet determined</td></tr>
<tr><th>Error Code</th><td> 0x80070003</td></tr>
<tr class="alt"><th>Config Error</th><td> Cannot read configuration file
| </td></tr>
<tr><th>Config File</th><td> \\?\C:\inetpub\wwwroot\web.config</td></tr>
</table>
</div>
<div id="details-right">
<table border="0" cellpadding="0" cellspacing="0">
<tr class="alt"><th>Requested URL</th><td> http://localhost:54198/Sub/App/PathANDPathBase/PATH</td></tr>
<tr><th>Physical Path</th><td> </td></tr>
<tr class="alt"><th>Logon Method</th><td> Not yet determined</td></tr>
<tr><th>Logon User</th><td> Not yet determined</td></tr>
<tr class="alt"><th>Request Tracing Directory</th><td> C:\Users\chrross\OneDrive - Microsoft\Documents\IISExpress\TraceLogFiles\</td></tr>
</table>
<div class="clear"></div>
</div>
</fieldset>
</div>
<div class="config_source content-container">
<fieldset>
<h4>Config Source:</h4>
<pre><code> -1:
| <span class="highlight-code"> 0: </span>
| </code></pre>
</fieldset>
</div>
<div class="content-container">
<fieldset><h4>More Information:</h4>
This error occurs when there is a problem reading the configuration file for the Web server or Web application. In some cases, the event logs may contain more information about what caused this error.<p></p><p></p>If you see the text "There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined", this error is because you are running a .NET Framework 3.5-based application in .NET Framework 4. If you are running WebMatrix, to resolve this problem, go to the Settings node to set the .NET Framework version to ".NET 2". You can also remove the extra sections from the web.config file.
<p><a href="https://go.microsoft.com/fwlink/?LinkID=62293&IIS70Error=500,19,0x80070003,23570">View more information »</a></p>
</fieldset>
</div>
</div>
</body>
</html>
| [0.313s] Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests.RequestPathBaseTests Error: Test threw an exception.
| Xunit.Sdk.EqualException: Assert.Equal() Failure
| Expected: 200
| Actual: 500
| at Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) in /_/src/xunit.assert/Asserts/EqualityAsserts.cs:line 96
| at Xunit.Assert.Equal[T](T expected, T actual) in /_/src/xunit.assert/Asserts/EqualityAsserts.cs:line 63
| at Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests.RequestPathBaseTests.RequestPathBase_WithDoubleSlashes_Split(String url, String expectedPathBase, String expectedPath) in D:\git\aspnetcore8\src\Servers\IIS\IIS\test\Common.FunctionalTests\RequestPathBaseTests.cs:line 85
| at Xunit.Sdk.TestInvoker`1.<>c__DisplayClass48_0.<<InvokeTestMethodAsync>b__1>d.MoveNext() in /_/src/xunit.execution/Sdk/Frameworks/Runners/TestInvoker.cs:line 264
| --- End of stack trace from previous location ---
| at Xunit.Sdk.ExecutionTimer.AggregateAsync(Func`1 asyncAction) in /_/src/xunit.execution/Sdk/Frameworks/ExecutionTimer.cs:line 48
| at Xunit.Sdk.ExceptionAggregator.RunAsync(Func`1 code) in /_/src/xunit.core/Sdk/ExceptionAggregator.cs:line 90
| [0.322s] TestLifetime Information: Finished test RequestPathBase_WithDoubleSlashes_Split-_Sub_App_PathANDPathBase_PATH-_Sub_App_PathANDPathBase-_PATH in 0.3202118s
Build
These are skipped on Helix, but fail locally.
Analysis
These tests were added about a year ago and might never have worked in the main build, but they weren't running most of the time due to another Helix issue.
The tests have their own config file which is only different in that it sets up a sub application to test PathBase. However, it sets up a root application that points at %SystemDrive%\inetpub\wwwroot
, but that will only be present if you have IIS installed, not just IIS Express.
aspnetcore/src/Servers/IIS/IntegrationTesting.IIS/src/Http.SubApp.config
Lines 160 to 163 in 6c1b3df
So this IIS Express test depends on an IIS asset which might not be available. We either need some other root site, or to require IIS for these tests.