From 0ec7d22ec18dfe99d6c229fa85abafd7e55eda6b Mon Sep 17 00:00:00 2001 From: Tim Deschryver <28659384+timdeschryver@users.noreply.github.com> Date: Wed, 23 Apr 2025 20:09:17 +0200 Subject: [PATCH 1/2] update links that result in 404 results --- CONTRIBUTING.md | 2 +- aspnetcore/fundamentals/app-state.md | 4 ++-- aspnetcore/fundamentals/owin.md | 18 +++++++++--------- aspnetcore/fundamentals/servers/index.md | 2 +- .../servers/yarp/distributed-tracing.md | 2 +- .../migration/proper-to-2x/includes/index5.md | 4 ++-- aspnetcore/migration/proper-to-2x/mvc2.md | 2 +- aspnetcore/test/dev-tunnels.md | 2 +- 8 files changed, 18 insertions(+), 18 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0104fd2c72c1..e4503b9e03c2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -188,7 +188,7 @@ DocFX requires: ## Voice and tone -Our goal is to write documentation that is easily understandable by the widest possible audience. To that end, we established guidelines for writing style that we ask our contributors to follow. For more information, see [Voice and tone guidelines](https://github.com/dotnet/docs/blob/main/styleguide/voice-tone.md) in the .NET repo. +Our goal is to write documentation that is easily understandable by the widest possible audience. To that end, we established guidelines for writing style that we ask our contributors to follow. For more information, see [Voice and tone guidelines](https://learn.microsoft.com/contribute/content/dotnet/dotnet-voice-tone). ## Microsoft Writing Style Guide diff --git a/aspnetcore/fundamentals/app-state.md b/aspnetcore/fundamentals/app-state.md index ff8876142017..2bd8b3582429 100644 --- a/aspnetcore/fundamentals/app-state.md +++ b/aspnetcore/fundamentals/app-state.md @@ -230,7 +230,7 @@ To enable the session-based TempData provider, use the . +In addition to unintended sharing, including data in query strings can expose the app to [Cross-Site Request Forgery (CSRF)](https://owasp.org/www-community/attacks/csrf) attacks. Any preserved session state must protect against CSRF attacks. For more information, see . ## Hidden fields @@ -507,7 +507,7 @@ To enable the session-based TempData provider, use the . +In addition to unintended sharing, including data in query strings can expose the app to [Cross-Site Request Forgery (CSRF)](https://owasp.org/www-community/attacks/csrf) attacks. Any preserved session state must protect against CSRF attacks. For more information, see . ## Hidden fields diff --git a/aspnetcore/fundamentals/owin.md b/aspnetcore/fundamentals/owin.md index 2eaa14ba7bba..f33b6a9ff2ca 100644 --- a/aspnetcore/fundamentals/owin.md +++ b/aspnetcore/fundamentals/owin.md @@ -34,7 +34,7 @@ This allows ASP.NET Core to be hosted on top of an OWIN compatible server/host o ASP.NET Core's OWIN support is deployed as part of the `Microsoft.AspNetCore.Owin` package. You can import OWIN support into your project by installing this package. -OWIN middleware conforms to the [OWIN specification](https://owin.org/spec/spec/owin-1.0.0.html), which requires a `Func, Task>` interface, and specific keys be set (such as `owin.ResponseBody`). The following simple OWIN middleware displays "Hello World": +OWIN middleware conforms to the [OWIN specification](http://owin.org/spec/spec/owin-1.0.0.html), which requires a `Func, Task>` interface, and specific keys be set (such as `owin.ResponseBody`). The following simple OWIN middleware displays "Hello World": ```csharp public Task OwinHello(IDictionary environment) @@ -42,7 +42,7 @@ public Task OwinHello(IDictionary environment) string responseText = "Hello World via OWIN"; byte[] responseBytes = Encoding.UTF8.GetBytes(responseText); - // OWIN Environment Keys: https://owin.org/spec/spec/owin-1.0.0.html + // OWIN Environment Keys: http://owin.org/spec/spec/owin-1.0.0.html var responseStream = (Stream)environment["owin.ResponseBody"]; var responseHeaders = (IDictionary)environment["owin.ResponseHeaders"]; @@ -102,7 +102,7 @@ You can construct an OWIN environment using the `HttpContext`. ## OWIN keys -OWIN depends on an `IDictionary` object to communicate information throughout an HTTP Request/Response exchange. ASP.NET Core implements the keys listed below. See the [primary specification, extensions](https://owin.org/#spec), and [OWIN Key Guidelines and Common Keys](https://owin.org/spec/spec/CommonKeys.html). +OWIN depends on an `IDictionary` object to communicate information throughout an HTTP Request/Response exchange. ASP.NET Core implements the keys listed below. See the [primary specification, extensions](http://owin.org/#spec), and [OWIN Key Guidelines and Common Keys](http://owin.org/spec/spec/CommonKeys.html). ### Request data (OWIN v1.0.0) @@ -155,14 +155,14 @@ OWIN depends on an `IDictionary` object to communicate informatio | Key | Value (type) | Description | | ----------------- | ------------ | ----------- | -| sendfile.SendAsync | See [delegate signature](https://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | Per Request | +| sendfile.SendAsync | See [delegate signature](http://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | Per Request | ### Opaque v0.3.0 | Key | Value (type) | Description | | ----------------- | ------------ | ----------- | | opaque.Version | `String` | | -| opaque.Upgrade | `OpaqueUpgrade` | See [delegate signature](https://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | +| opaque.Upgrade | `OpaqueUpgrade` | See [delegate signature](http://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | | opaque.Stream | `Stream` | | | opaque.CallCancelled | `CancellationToken` | | @@ -171,12 +171,12 @@ OWIN depends on an `IDictionary` object to communicate informatio | Key | Value (type) | Description | | ----------------- | ------------ | ----------- | | websocket.Version | `String` | | -| websocket.Accept | `WebSocketAccept` | See [delegate signature](https://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | +| websocket.Accept | `WebSocketAccept` | See [delegate signature](http://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | | websocket.AcceptAlt | | Non-spec | | websocket.SubProtocol | `String` | See [RFC6455 Section 4.2.2](https://tools.ietf.org/html/rfc6455#section-4.2.2) Step 5.5 | -| websocket.SendAsync | `WebSocketSendAsync` | See [delegate signature](https://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | -| websocket.ReceiveAsync | `WebSocketReceiveAsync` | See [delegate signature](https://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | -| websocket.CloseAsync | `WebSocketCloseAsync` | See [delegate signature](https://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | +| websocket.SendAsync | `WebSocketSendAsync` | See [delegate signature](http://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | +| websocket.ReceiveAsync | `WebSocketReceiveAsync` | See [delegate signature](http://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | +| websocket.CloseAsync | `WebSocketCloseAsync` | See [delegate signature](http://owin.org/spec/extensions/owin-SendFile-Extension-v0.3.0.htm) | | websocket.CallCancelled | `CancellationToken` | | | websocket.ClientCloseStatus | `int` | Optional | | websocket.ClientCloseDescription | `String` | Optional | diff --git a/aspnetcore/fundamentals/servers/index.md b/aspnetcore/fundamentals/servers/index.md index 7a822bab6a23..362dccf7eb76 100644 --- a/aspnetcore/fundamentals/servers/index.md +++ b/aspnetcore/fundamentals/servers/index.md @@ -43,7 +43,7 @@ Kestrel has the following advantages over HTTP.sys: * Cross platform * Agility, it's developed and patched independent of the OS. * Programmatic port and TLS configuration - * Extensibility that allows for protocols like [PPv2](https://github.com/aspnet/AspLabs/blob/main/src/ProxyProtocol/ProxyProtocol.Sample/ProxyProtocol.cs) and alternate transports. + * Extensibility that allows for protocols like [PPv2](https://www.haproxy.org/download/3.1/doc/proxy-protocol.txt) and alternate transports. Http.Sys operates as a shared kernel mode component with the following features that kestrel does not have: diff --git a/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md b/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md index fa8d1dbe1c82..2c46eefc5dcb 100644 --- a/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md +++ b/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md @@ -28,7 +28,7 @@ These will only be created if there is a listener for the [`ActivitySource`](/do ### Example: Application Insights -For example, to monitor the traces with Application Insights, the proxy application needs to use the [Open Telemetry](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry/README) and [Azure Monitor](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/README) SDKs. +For example, to monitor the traces with Application Insights, the proxy application needs to use the [Open Telemetry](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry/README.md) and [Azure Monitor](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/README.md) SDKs. `application.csproj`: diff --git a/aspnetcore/migration/proper-to-2x/includes/index5.md b/aspnetcore/migration/proper-to-2x/includes/index5.md index f29bf7374012..eea885504d37 100644 --- a/aspnetcore/migration/proper-to-2x/includes/index5.md +++ b/aspnetcore/migration/proper-to-2x/includes/index5.md @@ -44,7 +44,7 @@ ASP.NET Core introduced a new mechanism for bootstrapping an app. The entry poin [!code-csharp[](~/migration/proper-to-2x/samples/globalasax-sample.cs)] -This approach couples the application and the server to which it's deployed in a way that interferes with the implementation. In an effort to decouple, [OWIN](https://owin.org/) was introduced to provide a cleaner way to use multiple frameworks together. OWIN provides a pipeline to add only the modules needed. The hosting environment takes a [Startup](xref:fundamentals/startup) function to configure services and the app's request pipeline. `Startup` registers a set of middleware with the application. For each request, the application calls each of the middleware components with the head pointer of a linked list to an existing set of handlers. Each middleware component can add one or more handlers to the request handling pipeline. This is accomplished by returning a reference to the handler that's the new head of the list. Each handler is responsible for remembering and invoking the next handler in the list. With ASP.NET Core, the entry point to an application is `Startup`, and you no longer have a dependency on *Global.asax*. When using OWIN with .NET Framework, use something like the following as a pipeline: +This approach couples the application and the server to which it's deployed in a way that interferes with the implementation. In an effort to decouple, [OWIN](http://owin.org/) was introduced to provide a cleaner way to use multiple frameworks together. OWIN provides a pipeline to add only the modules needed. The hosting environment takes a [Startup](xref:fundamentals/startup) function to configure services and the app's request pipeline. `Startup` registers a set of middleware with the application. For each request, the application calls each of the middleware components with the head pointer of a linked list to an existing set of handlers. Each middleware component can add one or more handlers to the request handling pipeline. This is accomplished by returning a reference to the handler that's the new head of the list. Each handler is responsible for remembering and invoking the next handler in the list. With ASP.NET Core, the entry point to an application is `Startup`, and you no longer have a dependency on *Global.asax*. When using OWIN with .NET Framework, use something like the following as a pipeline: [!code-csharp[](~/migration/proper-to-2x/samples/webapi-owin.cs)] @@ -197,4 +197,4 @@ For apps that post JSON information to controllers and use JSON Input Formatters * [Porting Libraries to .NET Core](/dotnet/core/porting/libraries) -:::moniker-end \ No newline at end of file +:::moniker-end diff --git a/aspnetcore/migration/proper-to-2x/mvc2.md b/aspnetcore/migration/proper-to-2x/mvc2.md index 2488e4a07474..68b659b665cc 100644 --- a/aspnetcore/migration/proper-to-2x/mvc2.md +++ b/aspnetcore/migration/proper-to-2x/mvc2.md @@ -54,7 +54,7 @@ ASP.NET Core introduced a new mechanism for bootstrapping an app. The entry poin [!code-csharp[](samples/globalasax-sample.cs)] -This approach couples the application and the server to which it's deployed in a way that interferes with the implementation. In an effort to decouple, [OWIN](https://owin.org/) was introduced to provide a cleaner way to use multiple frameworks together. OWIN provides a pipeline to add only the modules needed. The hosting environment takes a [Startup](xref:fundamentals/startup) function to configure services and the app's request pipeline. `Startup` registers a set of middleware with the application. For each request, the application calls each of the middleware components with the head pointer of a linked list to an existing set of handlers. Each middleware component can add one or more handlers to the request handling pipeline. This is accomplished by returning a reference to the handler that's the new head of the list. Each handler is responsible for remembering and invoking the next handler in the list. With ASP.NET Core, the entry point to an application is `Startup`, and you no longer have a dependency on *Global.asax*. When using OWIN with .NET Framework, use something like the following as a pipeline: +This approach couples the application and the server to which it's deployed in a way that interferes with the implementation. In an effort to decouple, [OWIN](http://owin.org/) was introduced to provide a cleaner way to use multiple frameworks together. OWIN provides a pipeline to add only the modules needed. The hosting environment takes a [Startup](xref:fundamentals/startup) function to configure services and the app's request pipeline. `Startup` registers a set of middleware with the application. For each request, the application calls each of the middleware components with the head pointer of a linked list to an existing set of handlers. Each middleware component can add one or more handlers to the request handling pipeline. This is accomplished by returning a reference to the handler that's the new head of the list. Each handler is responsible for remembering and invoking the next handler in the list. With ASP.NET Core, the entry point to an application is `Startup`, and you no longer have a dependency on *Global.asax*. When using OWIN with .NET Framework, use something like the following as a pipeline: [!code-csharp[](samples/webapi-owin.cs)] diff --git a/aspnetcore/test/dev-tunnels.md b/aspnetcore/test/dev-tunnels.md index 622c2522f7ac..3365b8521cc3 100644 --- a/aspnetcore/test/dev-tunnels.md +++ b/aspnetcore/test/dev-tunnels.md @@ -16,7 +16,7 @@ The *dev tunnels* feature of Visual Studio 2022 enables ad-hoc connections betwe Some of the scenarios that dev tunnels enable: * Test a web app on other devices, like mobile phones and tablets. -* Test an app with external services. For instance, test and debug [Power Platform connectors](/connectors/custom-connectors/port-tunneling), [Azure Communication Services APIs](https://github.com/Azure-Samples/communication-services-dotnet-quickstarts/tree/main/CallAutomation_AppointmentReminder/CallAutomation_AppointmentReminder), or [Twilio webhooks](https://www.twilio.com/blog/use-visual-studio-port-tunneling-with-twilio-webhooks). +* Test an app with external services. For instance, test and debug [Power Platform connectors](/connectors/custom-connectors/port-tunneling), [Azure Communication Services APIs](https://github.com/Azure-Samples/communication-services-dotnet-quickstarts), or [Twilio webhooks](https://www.twilio.com/blog/use-visual-studio-port-tunneling-with-twilio-webhooks). * Make an app temporarily available to others over the internet, for a presentation or to invite others to review your work on a web app or API. * As an alternative to other port-forwarding solutions. From 5beb11508126d809ec12f3667324323db3ee1db1 Mon Sep 17 00:00:00 2001 From: Luke Latham <1622880+guardrex@users.noreply.github.com> Date: Wed, 23 Apr 2025 15:25:42 -0400 Subject: [PATCH 2/2] Apply suggestions from code review --- CONTRIBUTING.md | 2 +- aspnetcore/fundamentals/servers/yarp/distributed-tracing.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e4503b9e03c2..c15206fa0463 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -188,7 +188,7 @@ DocFX requires: ## Voice and tone -Our goal is to write documentation that is easily understandable by the widest possible audience. To that end, we established guidelines for writing style that we ask our contributors to follow. For more information, see [Voice and tone guidelines](https://learn.microsoft.com/contribute/content/dotnet/dotnet-voice-tone). +Our goal is to write documentation that is easily understandable by the widest possible audience. To that end, we established guidelines for writing style that we ask our contributors to follow. For more information, see [Voice and tone guidelines](/contribute/content/dotnet/dotnet-voice-tone). ## Microsoft Writing Style Guide diff --git a/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md b/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md index 2c46eefc5dcb..93211051ff8e 100644 --- a/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md +++ b/aspnetcore/fundamentals/servers/yarp/distributed-tracing.md @@ -28,7 +28,7 @@ These will only be created if there is a listener for the [`ActivitySource`](/do ### Example: Application Insights -For example, to monitor the traces with Application Insights, the proxy application needs to use the [Open Telemetry](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry/README.md) and [Azure Monitor](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore/README.md) SDKs. +For example, to monitor the traces with Application Insights, the proxy application needs to use the [Open Telemetry](https://github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry) and [Azure Monitor](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/monitor/Azure.Monitor.OpenTelemetry.AspNetCore) SDKs. `application.csproj`: