Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions docs/core/diagnostics/faq-dumps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ metadata:
ms.topic: faq
ms.date: 10/07/2022
title: FAQ for dumps
summary: This articleanswerscommonlyaskedquestionsaboutcollecting dumps in .NET.
sections:
- name: Collecting dumps on macOS and Linux
questions:
summary: This article answers commonly asked questions about collecting dumps in .NET.

sections:
- name: Collecting dumps on macOS and Linux
questions:
- question: |
Why is dump collection failing on Linux?
answer: |
Expand All @@ -19,7 +19,7 @@ sections:
[createdump] The process or container does not have permissions or access: open(/proc/1234/mem) FAILED Permission denied (13)
```

One reason that access can be denied is if a security sandbox intercepts the call using a [seccomp BPF filter](https://www.kernel.org/doc/html/v4.19/userspace-api/seccomp_filter.html). For applications running in a container using Open Container Initiative technology, the `seccomp` profile must allow for calls to `ptrace`. For example, `Docker` uses [containerd](https://github.com/moby/containerd) under the hood as a container runtime. When initializing, it specifies a default [seccomp profile](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) that allows `ptrace` only if the container host has a kernel version higher than 4.8 or if the `CAP_SYS_PTRACE` capability was specified on the container.
One reason that access can be denied is if a security sandbox intercepts the call using a [seccomp BPF filter](https://www.kernel.org/doc/html/v4.19/userspace-api/seccomp_filter.html). For applications running in a container using Open Container Initiative technology, the `seccomp` profile must allow for calls to `ptrace`. For example, `Docker` uses [containerd](https://github.com/moby/containerd) under the hood as a container runtime. When initializing, it specifies a default [seccomp profile](https://github.com/moby/moby/blob/master/vendor/github.com/moby/profiles/seccomp/default.json) that allows `ptrace` only if the container host has a kernel version higher than 4.8 or if the `CAP_SYS_PTRACE` capability was specified on the container.

If the calls aren't intercepted, then the kernel does a variety of built-in access checks. The docs for [ptrace()](https://www.man7.org/linux/man-pages/man2/ptrace.2.html) include a detailed description near the end, titled "Ptrace access mode checking", that describes how these are done. Accessing the /proc filesystem also uses a variation of the same ptrace access mode checking. What follows is an abbreviated summary of the security checks performed and places where access might be denied:

Expand Down Expand Up @@ -50,22 +50,22 @@ sections:
- question: |
Why can't I collect dumps when running inside a container?
answer: |
For applications running under any Open Container Initiative technology, the `seccomp` profile must allow for calls to [ptrace()](https://www.man7.org/linux/man-pages/man2/ptrace.2.html). For example, `Docker` uses [containerd](https://github.com/moby/containerd) under the hood as a container runtime. When initializing the runtime, it specifies a default [seccomp profile](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) that allows `ptrace` only if the container host has a kernel version higher than 4.8 or if the `CAP_SYS_PTRACE` capability was specified.
For applications running under any Open Container Initiative technology, the `seccomp` profile must allow for calls to [ptrace()](https://www.man7.org/linux/man-pages/man2/ptrace.2.html). For example, `Docker` uses [containerd](https://github.com/moby/containerd) under the hood as a container runtime. When initializing the runtime, it specifies a default [seccomp profile](https://github.com/moby/moby/blob/master/vendor/github.com/moby/profiles/seccomp/default.json) that allows `ptrace` only if the container host has a kernel version higher than 4.8 or if the `CAP_SYS_PTRACE` capability was specified.

For a fuller description of how Linux security policies impact dump collection, see the question 'Why is dump collection failing on Linux?'.
- question: |
Why can't I collect dumps on macOS?
answer: |
On macOS the use of `ptrace` requires the host of the target process to be properly entitled. For information about the minimum required entitlements, see [Default entitlements](../install/macos-notarization-issues.md#default-entitlements).

- question: |
Where can I learn more about how I can leverage dumps to help diagnose problems in my .NET application?
answer: |
answer: |
Here are some additional resources:

* [Debug Linux dumps](debug-linux-dumps.md)
* [Debug a deadlock in a .NET app](debug-deadlock.md)
* [Debug Linux dumps](debug-linux-dumps.md)
* [Debug a deadlock in a .NET app](debug-deadlock.md)

- question: |
How can I solve "It was not possible to find any compatible framework version"
answer: |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ A workflow service must be hosted for it to respond to incoming messages. Workfl

## Deployment

The Web Deployment tool has been created to make the job of deployment easier. The tool allows you to migrate applications between IIS 6.0 and IIS 7.0, synchronize server farms, and package, archive, and deploy Web applications. For more information, see [Web Deploy Tool](https://iis-umbraco.azurewebsites.net/downloads/microsoft/web-deploy).
The Web Deployment tool was created to make the job of deployment easier. The tool allows you to migrate applications between IIS 6.0 and IIS 7.0, synchronize server farms, and package, archive, and deploy Web applications. For more information, see [Web Deploy Tool](https://www.iis.net/downloads/microsoft/web-deploy).

## See also

Expand Down
27 changes: 9 additions & 18 deletions docs/framework/wcf/feature-details/routing-service.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@ The <xref:System.ServiceModel.Routing.RoutingService> is implemented as a Window
- Content-based routing

- Service aggregation

- Service versioning

- Priority routing

- Dynamic configuration

- Protocol bridging
Expand All @@ -33,24 +30,21 @@ While it is possible to create an intermediary service that accomplishes one or
The Routing Service provides a generic, dynamically configurable, pluggable SOAP intermediary that is compatible with the WCF Service and Channel models and allows you to perform content-based routing of SOAP-based messages.

> [!NOTE]
> The Routing Service does not currently support routing of WCF REST services. To route REST calls, consider using <xref:System.Web.Routing> or [Application Request Routing](https://iis-umbraco.azurewebsites.net/downloads/microsoft/application-request-routing).
> The Routing Service does not currently support routing of WCF REST services. To route REST calls, consider using <xref:System.Web.Routing> or [Application Request Routing](https://www.iis.net/downloads/microsoft/application-request-routing).

## Content-Based Routing

Content-based routing is the ability to route a message based on one or more values contained within the message. The Routing Service inspects each message and routes it to the destination endpoint based on the message contents and the routing logic you create. Content-based routing provides the basis for service aggregation, service versioning, and priority routing.

To implement content-based routing, the Routing Service relies on <xref:System.ServiceModel.Dispatcher.MessageFilter> implementations that are used to match specific values within the messages to be routed. If a **MessageFilter** matches a message, the message is routed to the destination endpoint associated with the **MessageFilter**. Message filters are grouped together into filter tables (<xref:System.ServiceModel.Routing.Configuration.FilterTableCollection>) to construct complex routing logic. For example, a filter table might contain five mutually exclusive message filters that cause messages to be routed to only one of the five destination endpoints.
To implement content-based routing, the Routing Service relies on <xref:System.ServiceModel.Dispatcher.MessageFilter> implementations that are used to match specific values within the messages to be routed. If a **MessageFilter** matches a message, the message is routed to the destination endpoint associated with the **MessageFilter**. Message filters are grouped together into filter tables (<xref:System.ServiceModel.Routing.Configuration.FilterTableCollection>) to construct complex routing logic. For example, a filter table might contain five mutually exclusive message filters that cause messages to be routed to only one of the five destination endpoints.

The Routing Service allows you to configure the logic that is used to perform content-based routing, as well as dynamically update the routing logic at run time.

Through the grouping of message filters into filter tables, routing logic can be constructed that allows you to handle multiple routing scenarios such as:

- Service aggregation

- Service versioning

- Priority routing

- Dynamic configuration

For more information about message filters and filter tables, see [Routing Introduction](routing-introduction.md) and [Message Filters](message-filters.md).
Expand Down Expand Up @@ -87,9 +81,9 @@ For more information about SOAP processing, see [Routing Introduction](routing-i

## Error Handling

In a system composed of distributed services that rely on network communications, it is important to ensure that communications within your system are resistant to transient network failures. The Routing Service implements error handling that allows you to handle many communication failure scenarios that might otherwise result in a service outage.
In a system composed of distributed services that rely on network communications, it is important to ensure that communications within your system are resistant to transient network failures. The Routing Service implements error handling that allows you to handle many communication failure scenarios that might otherwise result in a service outage.

If the Routing Service encounters a <xref:System.ServiceModel.CommunicationException> while attempting to send a message, error handling will take place. These exceptions typically indicate that a problem was encountered while attempting to communicate with the defined client endpoint, such as an <xref:System.ServiceModel.EndpointNotFoundException>, <xref:System.ServiceModel.ServerTooBusyException>, or <xref:System.ServiceModel.CommunicationObjectFaultedException>. The error-handling code will also catch and attempt to retry sending when a **TimeoutException** occurs, which is another common exception that is not derived from **CommunicationException**.
If the Routing Service encounters a <xref:System.ServiceModel.CommunicationException> while attempting to send a message, error handling will take place. These exceptions typically indicate that a problem was encountered while attempting to communicate with the defined client endpoint, such as an <xref:System.ServiceModel.EndpointNotFoundException>, <xref:System.ServiceModel.ServerTooBusyException>, or <xref:System.ServiceModel.CommunicationObjectFaultedException>. The error-handling code will also catch and attempt to retry sending when a **TimeoutException** occurs, which is another common exception that is not derived from **CommunicationException**.

For more information about error handling, see [Routing Introduction](routing-introduction.md).

Expand All @@ -101,15 +95,12 @@ For more information about backup endpoints, see [Routing Introduction](routing-

## Streaming

The routing service can successfully stream messages if you set the binding to support streaming. However, there are some conditions under which messages may need to buffered:

- Multicast (buffer to create additional message copies)

- Failover (buffer in case the message needs to be sent to a backup)
The routing service can successfully stream messages if you set the binding to support streaming. However, there are some conditions under which messages may need to buffered:

- System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly is false (buffer to present the MessageFilterTable with a MessageBuffer so that filters can inspect the body)

- Dynamic configuration
- Multicast (buffer to create additional message copies).
- Failover (buffer in case the message needs to be sent to a backup).
- System.ServiceModel.Routing.RoutingConfiguration.RouteOnHeadersOnly is false (buffer to present the MessageFilterTable with a MessageBuffer so that filters can inspect the body).
- Dynamic configuration.

## See also

Expand Down