Contributes to #36100
Description
AI Freshness Article Review Report: Publish an ASP.NET Core app to IIS
Run by: WadePickett
File: aspnetcore/tutorials/publish-to-iis.md
Repository: dotnet/AspNetCore.Docs
Reviewed by: GitHub Copilot
Review Date: 02/23/2026
Article UID: tutorials/publish-to-iis
Source: publish-to-iis.md on GitHub
Executive Summary
The article "Publish an ASP.NET Core app to IIS" is significantly outdated. The ms.date metadata is 10/03/2019 — over 6 years old — and the content has not been substantially revised to reflect modern .NET practices or current tooling. The current latest stable version of .NET is .NET 10 (LTS), yet the article's moniker range starts at aspnetcore-2.1 and the content does not reference any modern .NET version. Several metadata, formatting, and content issues were identified against the repository's Copilot instructions and the Microsoft Writing Style Guide.
Overall Verdict: ⚠️ Needs Updating
1. Metadata Issues
| Issue |
Current Value |
Expected Value |
Severity |
ms.date is extremely outdated |
10/03/2019 |
Should be updated to current date (02/23/2026) upon next content revision |
|
| Metadata ordering |
title, author, description, monikerRange, ms.author, ms.custom, ms.date, uid |
✅ Correct — already in required order (title first, then alphabetical) |
✅ Good, already correct as is. |
Missing ai-usage metadata |
Not present |
Should be added as ai-usage: ai-assisted if AI assistance is used during any update |
ℹ️ Info |
2. Content Freshness Issues
2.1 Outdated .NET Version References
| Issue |
Details |
Severity |
| The Hosting Bundle download link |
Uses the dotnetcore-current-windows-runtime-bundle-installer permalink which auto-resolves — this is still valid. |
✅ Good |
2.2 Missing Modern Deployment Guidance
| Issue |
Details |
Severity |
| No mention of in-process hosting model |
The in-process hosting model (default since ASP.NET Core 3.0) is not discussed. This is the recommended hosting model for IIS. |
🟡 Medium |
No mention of web.config |
For IIS hosting, the web.config file is critical. The article does not mention it at all. |
🟡 Medium |
| No mention of self-contained vs framework-dependent deployments |
Modern .NET supports both deployment modes, which affect what's needed on the server. |
🟡 Medium |
| Visual Studio publish experience outdated |
The "Pick a publish target" dialog UI description may not match current Visual Studio versions. The current VS publish workflow uses a different wizard flow. |
🟡 Medium |
No mention of dotnet publish -o output path option |
The modern dotnet publish command commonly uses -o to specify the output directory. |
🟢 Low |
3. Formatting & Style Issues (per Copilot Instructions)
3.1 Bullet List Markers
| Issue |
Details |
Severity |
Uses * for unordered lists in Prerequisites |
The Prerequisites section uses * which is correct per the repo guidelines ("use an asterisk as the bullet marker"). |
✅ Good |
| Warning block uses single bullet items |
In the WARNING block, the third bullet item ("To focus on IIS deployment concepts...") is a standalone item at the same level, which is acceptable in this context. |
✅ Good |
3.2 Ordered List Numbering
| Issue |
Details |
Severity |
Ordered lists use 1. for every item |
All ordered lists correctly use 1. rather than sequential numbers (1., 2., 3.). |
✅ Good |
3.3 Introductory Paragraph
| Issue |
Details |
Severity |
| Introductory paragraph is too brief |
Per content writing guidelines, the intro should "explain why and when the topic matters in practical ASP.NET Core development scenarios" and "give a concise summary of what the article covers." The current intro is just: "This tutorial shows how to host an ASP.NET Core app on an IIS server." |
🟡 Medium |
3.4 Placeholder Formatting
| Issue |
Details |
Severity |
{TARGET FRAMEWORK} placeholder usage |
Used in line 94: bin/Release/{TARGET FRAMEWORK}/publish — this follows the correct {PLACEHOLDER NAME} format with uppercase letters. |
✅ Good |
| Missing placeholder explanation |
The {TARGET FRAMEWORK} placeholder is not explained with a statement like "where the {TARGET FRAMEWORK} placeholder is..." per copilot instructions. |
🟢 Low |
4. Links & Cross-References Audit
4.1 Internal xref Links
| Link |
Target |
Valid? |
<xref:host-and-deploy/iis/index#iis-configuration> |
IIS hosting article |
✅ Valid |
<xref:host-and-deploy/iis/index> |
IIS hosting overview |
✅ Valid |
<xref:host-and-deploy/iis/advanced#data-protection> |
IIS advanced topics |
✅ Valid |
<xref:host-and-deploy/iis/advanced#application-pool-identity> |
IIS advanced topics |
✅ Valid |
<xref:host-and-deploy/aspnet-core-module> |
ASP.NET Core Module |
✅ Valid |
<xref:host-and-deploy/directory-structure> |
Directory structure |
✅ Valid |
<xref:blazor/host-and-deploy/webassembly/iis> |
Blazor WASM on IIS |
✅ Valid (confirmed file exists with uid blazor/host-and-deploy/webassembly/iis) |
<xref:test/troubleshoot-azure-iis> |
Troubleshoot Azure/IIS |
✅ Valid |
<xref:security/enforcing-ssl> |
Enforcing SSL |
✅ Valid |
<xref:tutorials/publish-to-azure-webapp-using-vs> |
Publish to Azure with VS |
✅ Valid |
<xref:tutorials/publish-to-azure-webapp-using-vscode> |
Publish to Azure with VS Code |
✅ Valid (confirmed uid exists) |
<xref:host-and-deploy/visual-studio-publish-profiles> |
VS publish profiles |
✅ Valid |
<xref:host-and-deploy/iis/modules> |
IIS modules |
✅ Valid (confirmed uid host-and-deploy/iis/modules) |
<xref:host-and-deploy/azure-iis-errors-reference> |
Azure/IIS error reference |
✅ Valid (confirmed uid host-and-deploy/azure-iis-errors-reference) |
(xref:fundamentals/websockets#enabling-websockets-on-iis) |
WebSockets on IIS |
⚠️ Inconsistent format — uses (xref:...) instead of <xref:...> syntax. This is within a link text [WebSockets on IIS](xref:...) which is an acceptable xref link format. |
4.2 External Links
| Link |
Valid? |
Notes |
https://www.iis.net/ |
✅ Valid |
Official IIS site |
https://dotnet.microsoft.com/permalink/dotnetcore-current-windows-runtime-bundle-installer |
✅ Valid |
Permalink that auto-resolves to current version |
4.3 Microsoft Learn Links (Cross-repo)
| Link |
Format Correct? |
Notes |
/dotnet/core/sdk |
✅ Correct |
Relative URL without scheme/host/locale |
/dotnet/core/tools/dotnet-publish |
✅ Correct |
Relative URL without scheme/host/locale |
/dotnet/core/deploying/ |
✅ Correct |
Relative URL |
/iis/manage/configuring-security/configuring-ssl-in-iis-manager |
✅ Correct |
Relative URL |
/iis/manage/configuring-security/how-to-set-up-ssl-on-iis |
✅ Correct |
Relative URL |
/windows-server/windows-server |
✅ Correct |
Relative URL |
/iis |
✅ Correct |
Relative URL |
/iis/get-started/getting-started-with-iis/getting-started-with-the-iis-manager-in-iis-7-and-iis-8 |
✅ Correct |
Relative URL |
/iis/extensions/configuring-application-request-routing-arr/http-load-balancing-using-application-request-routing |
✅ Correct |
Relative URL |
5. RFC Reference Check
| Reference |
Details |
Status |
| RFC 9110 Section 7.2 link |
https://www.rfc-editor.org/rfc/rfc9110#field.host |
✅ Valid — correct external link format, no locale segments |
6. Additional Resources Section Audit
The Additional resources section is well-organized with sub-headings. However:
| Issue |
Details |
Severity |
| Duplicate xref links |
<xref:host-and-deploy/aspnet-core-module>, <xref:host-and-deploy/directory-structure>, and <xref:test/troubleshoot-azure-iis> each appear twice in the Additional resources section (once under "Articles in the ASP.NET Core documentation set" and again under "Deployment resources for IIS administrators"). |
🟢 Low |
7. Summary of Recommended Actions
🔴 Critical (Must Fix)
- Update
ms.date — The date 10/03/2019 is over 6 years stale. Any content revision should update this to the current date in MM/DD/YYYY format.
🟡 Medium (Should Fix)
- Narrow
monikerRange — Consider updating from '>= aspnetcore-2.1' to only cover currently supported versions, so a rane >= 7.0.
- Expand the introductory paragraph — Explain why IIS hosting matters, when to choose IIS over other hosting options (Kestrel standalone, Azure App Service, Docker), and what the reader will learn.
- Add in-process hosting model guidance — Mention that in-process hosting is the default and recommended model since ASP.NET Core 3.0, and briefly explain the difference from out-of-process.
- Add
web.config mention — At minimum, note that a web.config file is generated during publish and is required for the ASP.NET Core Module.
- Add self-contained vs. framework-dependent deployment guidance — Clarify the two deployment models and their implications for what needs to be installed on the server.
- Update Visual Studio publish flow — The "Pick a publish target" dialog description may not match the current Visual Studio UI. Verify and update.
🟢 Low (Nice to Have)
- Explain the
{TARGET FRAMEWORK} placeholder — Add a brief note like "where the {TARGET FRAMEWORK} placeholder is the target framework moniker (for example, net10.0)."
- Deduplicate Additional Resources — Remove duplicate xref links that appear in multiple sub-sections.
8. What's Good (No Changes Needed)
- ✅ All xref cross-references are valid and use correct syntax
- ✅ All Microsoft Learn cross-repo links use correct relative URL format (no scheme/host/locale)
- ✅ External links use absolute URLs without locale segments
- ✅ Ordered lists use
1. for every item (per repo convention)
- ✅ Unordered lists use
* as bullet marker
- ✅ Placeholder format
{TARGET FRAMEWORK} follows the {PLACEHOLDER NAME} convention
- ✅ Metadata is in correct order (title first, then alphabetical)
- ✅ The Hosting Bundle permalink URL auto-resolves and remains valid
- ✅ RFC reference link is correct
Report generated by GitHub Copilot on 2026-02-23
Page URL
https://learn.microsoft.com/en-us/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-10.0&tabs=visual-studio
Content source URL
https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/tutorials/publish-to-iis.md
Document ID
51273790-5178-875b-010e-15d7725da535
Platform Id
f26d1cd3-e193-da48-4fd9-3e94934d2d1b
Article author
@wadepickett
Metadata
- ID: f92a99a8-6ffa-e5f9-b7ef-f13fa1e0f17b
- PlatformId: f26d1cd3-e193-da48-4fd9-3e94934d2d1b
- Service: aspnet-core
- Sub-service: tutorials
Related Issues
Associated WorkItem - 554843