diff --git a/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2.md b/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2.md index f4b6b18fad..c2debf5d21 100644 --- a/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2.md +++ b/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2.md @@ -63,7 +63,7 @@ In this example, "1" is an order number, but "pending" maps to a collection. `/orders/1` `/orders/pending` -**Mulitple parameter types** +**Multiple parameter types** In this example, "1" is an order number, but "2013/06/16" specifies a date. diff --git a/aspnetcore/data/ef-rp/migrations.md b/aspnetcore/data/ef-rp/migrations.md index 4da958e567..a8d8ad487f 100644 --- a/aspnetcore/data/ef-rp/migrations.md +++ b/aspnetcore/data/ef-rp/migrations.md @@ -123,7 +123,7 @@ The snapshot file must be in sync with the migrations that created it. A migrati ## Remove EnsureCreated -For early development, the `EnsureCreated` command was used. In this tutorial, migrations is used. `EnsureCreated` has the following limatitions: +For early development, the `EnsureCreated` command was used. In this tutorial, migrations is used. `EnsureCreated` has the following limitations: * Bypasses migrations and creates the DB and schema. * Does not create a migrations table. diff --git a/aspnetcore/fundamentals/configuration/index.md b/aspnetcore/fundamentals/configuration/index.md index 5446e6199a..76312dfb77 100644 --- a/aspnetcore/fundamentals/configuration/index.md +++ b/aspnetcore/fundamentals/configuration/index.md @@ -5,7 +5,7 @@ description: Use the Configuration API to configure an ASP.NET Core app by multi manager: wpickett ms.author: riande ms.custom: mvc -ms.date: 1/11/2018 +ms.date: 01/11/2018 ms.topic: article ms.technology: aspnet ms.prod: asp.net-core @@ -45,7 +45,7 @@ The app reads and displays the following configuration settings: Configuration consists of a hierarchical list of name-value pairs in which the nodes are separated by a colon. To retrieve a value, access the `Configuration` indexer with the corresponding item's key: -[!code-csharp[Main](index/sample/ConfigJson/Program.cs?range=24-24)] +[!code-csharp[Main](index/sample/ConfigJson/Program.cs?range=21-22)] To work with arrays in JSON-formatted configuration sources, use an array index as part of the colon-separated string. The following example gets the name of the first item in the preceding `wizards` array: @@ -54,7 +54,7 @@ Console.Write($"{Configuration["wizards:0:Name"]}"); // Output: Gandalf ``` -Name-value pairs written to the built-in [Configuration](https://docs.microsoft.com/ dotnet/api/microsoft.extensions.configuration) providers are **not** persisted. However, you can create a custom provider that saves values. See [custom configuration provider](xref:fundamentals/configuration/index#custom-config-providers). +Name-value pairs written to the built-in [Configuration](/dotnet/api/microsoft.extensions.configuration) providers are **not** persisted. However, you can create a custom provider that saves values. See [custom configuration provider](xref:fundamentals/configuration/index#custom-config-providers). The preceding sample uses the configuration indexer to read values. To access configuration outside of `Startup`, use the *options pattern*. For more information, see the [Options](xref:fundamentals/configuration/options) topic. @@ -67,7 +67,7 @@ It's typical to have different configuration settings for different environments * *appsettings.\.json* * Environment variables -ASP.NET Core 1.x apps need to call `AddJsonFile` and [AddEnvironmentVariables](https://docs.microsoft.com/ dotnet/api/microsoft.extensions.configuration.environmentvariablesextensions.addenvironmentvariables #Microsoft_Extensions_Configuration_EnvironmentVariablesExtensions_AddEnvironmentVariables_Microsoft_Extensions_Configuration_IConfigurationBuilder_System_String_). +ASP.NET Core 1.x apps need to call `AddJsonFile` and [AddEnvironmentVariables](/dotnet/api/microsoft.extensions.configuration.environmentvariablesextensions.addenvironmentvariables#Microsoft_Extensions_Configuration_EnvironmentVariablesExtensions_AddEnvironmentVariables_Microsoft_Extensions_Configuration_IConfigurationBuilder_System_String_). See [AddJsonFile](/dotnet/api/microsoft.extensions.configuration.jsonconfigurationextensions) for an explanation of the parameters. `reloadOnChange` is only supported in ASP.NET Core 1.1 and later. @@ -101,7 +101,7 @@ Configuration values are returned as strings, but binding enables the constructi ### GetValue -The following sample demonstrates the [GetValue<T>](https://docs.microsoft.com/aspnet/core/api/microsoft.extensions.configuration.configurationbinder#Microsoft_Extensions_Configuration_ConfigurationBinder_GetValue_Microsoft_Extensions_Configuration_IConfiguration_System_Type_System_String_System_Object_) extension method: +The following sample demonstrates the [GetValue<T>](/dotnet/api/microsoft.extensions.configuration.configurationbinder.get?view=aspnetcore-2.0#Microsoft_Extensions_Configuration_ConfigurationBinder_Get__1_Microsoft_Extensions_Configuration_IConfiguration_) extension method: [!code-csharp[Main](index/sample/InMemoryGetValue/Program.cs?highlight=31)] @@ -170,11 +170,11 @@ Add a `ConfigurationContext` to store and access the configured values: [!code-csharp[Main](index/sample/CustomConfigurationProvider/ConfigurationContext.cs?name=snippet1)] -Create a class that implements [IConfigurationSource](https://docs.microsoft.com/aspnet/core/api/microsoft.extensions.configuration.iconfigurationsource): +Create a class that implements [IConfigurationSource](/dotnet/api/Microsoft.Extensions.Configuration.IConfigurationSource): [!code-csharp[Main](index/sample/CustomConfigurationProvider/EntityFrameworkConfigurationSource.cs?highlight=7)] -Create the custom configuration provider by inheriting from [ConfigurationProvider](https://docs.microsoft.com/aspnet/core/api/microsoft.extensions.configuration.configurationprovider). The configuration provider initializes the database when it's empty: +Create the custom configuration provider by inheriting from [ConfigurationProvider](/dotnet/api/Microsoft.Extensions.Configuration.ConfigurationProvider). The configuration provider initializes the database when it's empty: [!code-csharp[Main](index/sample/CustomConfigurationProvider/EntityFrameworkConfigurationProvider.cs?highlight=9,18-31,38-39)] @@ -396,7 +396,7 @@ A *web.config* file is required when hosting the app in IIS or IIS Express. Sett * `IConfiguration` has two specializations: * `IConfigurationRoot` Used for the root node. Can trigger a reload. * `IConfigurationSection` Represents a section of configuration values. The `GetSection` and `GetChildren` methods return an `IConfigurationSection`. - * Use [IConfigurationRoot](https://docs.microsoft.com/ dotnet/api/microsoft.extensions.configuration.iconfigurationroot) when reloading configuration or need access to each provider. Neither of these situations are common. + * Use [IConfigurationRoot](/dotnet/api/microsoft.extensions.configuration.iconfigurationroot) when reloading configuration or need access to each provider. Neither of these situations are common. ## Additional resources diff --git a/aspnetcore/fundamentals/url-rewriting.md b/aspnetcore/fundamentals/url-rewriting.md index 8c8068efaa..bc6d8d29da 100644 --- a/aspnetcore/fundamentals/url-rewriting.md +++ b/aspnetcore/fundamentals/url-rewriting.md @@ -33,7 +33,9 @@ You can define rules for changing the URL in several ways, including regex, Apac ## URL redirect and URL rewrite The difference in wording between *URL redirect* and *URL rewrite* may seem subtle at first but has important implications for providing resources to clients. ASP.NET Core's URL Rewriting Middleware is capable of meeting the need for both. -A *URL redirect* is a client-side operation, where the client is instructed to access a resource at another address. This requires a round-trip to the server, and the redirect URL returned to the client appears in the browser's address bar when the client makes a new request for the resource. If `/resource` is *redirected* to `/different-resource`, the client requests `/resource`, and the server responds that the client should obtain the resource at `/different-resource` with a status code indicating that the redirect is either temporary or permanent. The client executes a new request for the resource at the redirect URL. +A *URL redirect* is a client-side operation, where the client is instructed to access a resource at another address. This requires a round-trip to the server. The redirect URL returned to the client appears in the browser's address bar when the client makes a new request for the resource. + +If `/resource` is *redirected* to `/different-resource`, the client requests `/resource`. The server responds that the client should obtain the resource at `/different-resource` with a status code indicating that the redirect is either temporary or permanent. The client executes a new request for the resource at the redirect URL. ![A WebAPI service endpoint has been temporarily changed from version 1 (v1) to version 2 (v2) on the server. A client makes a request to the service at the version 1 path /v1/api. The server sends back a 302 (Found) response with the new, temporary path for the service at version 2 /v2/api. The client makes a second request to the service at the redirect URL. The server responds with a 200 (OK) status code.](url-rewriting/_static/url_redirect.png)