You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: aspnetcore/grpc/browser.md
+11-2Lines changed: 11 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ author: jamesnk
4
4
description: Learn how to configure gRPC services on ASP.NET Core to be callable from browser apps using gRPC-Web.
5
5
monikerRange: '>= aspnetcore-3.0'
6
6
ms.author: jamesnk
7
-
ms.date: 02/16/2020
7
+
ms.date: 04/15/2020
8
8
uid: grpc/browser
9
9
---
10
10
# Use gRPC in browser apps
@@ -23,6 +23,15 @@ By [James Newton-King](https://twitter.com/jamesnk)
23
23
24
24
It is not possible to call a HTTP/2 gRPC service from a browser-based app. [gRPC-Web](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md) is a protocol that allows browser JavaScript and Blazor apps to call gRPC services. This article explains how to use gRPC-Web in .NET Core.
25
25
26
+
## gRPC-Web in ASP.NET Core vs. Envoy
27
+
28
+
There are two choices for how to add gRPC-Web to an ASP.NET Core app:
29
+
30
+
* Support gRPC-Web alongside gRPC HTTP/2 in ASP.NET Core. This option uses middleware provided by the `Grpc.AspNetCore.Web` package.
31
+
* Use the [Envoy proxy's](https://www.envoyproxy.io/) gRPC-Web support to translate gRPC-Web to gRPC HTTP/2. The translated call is then forwarded onto the ASP.NET Core app.
32
+
33
+
There are pros and cons to each approach. If you're already using Envoy as a proxy in your app's environment, it might make sense to also use it to provide gRPC-Web support. If you want a simple solution for gRPC-Web that only requires ASP.NET Core, `Grpc.AspNetCore.Web` is a good choice.
34
+
26
35
## Configure gRPC-Web in ASP.NET Core
27
36
28
37
gRPC services hosted in ASP.NET Core can be configured to support gRPC-Web alongside HTTP/2 gRPC. gRPC-Web does not require any changes to services. The only modification is startup configuration.
@@ -94,7 +103,7 @@ The preceding code:
94
103
The `GrpcWebHandler` has the following configuration options when created:
95
104
96
105
***InnerHandler**: The underlying <xref:System.Net.Http.HttpMessageHandler> that makes the gRPC HTTP request, for example, `HttpClientHandler`.
97
-
***Mode**: An enumeration type that specifies whether the gRPC HTTP request request `Content-Type` is `application/grpc-web` or `application/grpc-web-text`.
106
+
***Mode**: An enumeration type that specifies whether the gRPC HTTP request `Content-Type` is `application/grpc-web` or `application/grpc-web-text`.
98
107
*`GrpcWebMode.GrpcWeb` configures content to be sent without encoding. Default value.
99
108
*`GrpcWebMode.GrpcWebText` configures content to be base64 encoded. Required for server streaming calls in browsers.
100
109
***HttpVersion**: HTTP protocol `Version` used to set [HttpRequestMessage.Version](xref:System.Net.Http.HttpRequestMessage.Version) on the underlying gRPC HTTP request. gRPC-Web doesn't require a specific version and doesn't override the default unless specified.
Copy file name to clipboardExpand all lines: aspnetcore/grpc/configuration.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,8 +16,8 @@ gRPC services are configured with `AddGrpc` in *Startup.cs*. The following table
16
16
17
17
| Option | Default Value | Description |
18
18
| ------ | ------------- | ----------- |
19
-
| MaxSendMessageSize |`null`| The maximum message size in bytes that can be sent from the server. Attempting to send a message that exceeds the configured maximum message size results in an exception. |
20
-
| MaxReceiveMessageSize | 4 MB | The maximum message size in bytes that can be received by the server. If the server receives a message that exceeds this limit, it throws an exception. Increasing this value allows the server to receive larger messages, but can negatively impact memory consumption. |
19
+
| MaxSendMessageSize |`null`| The maximum message size in bytes that can be sent from the server. Attempting to send a message that exceeds the configured maximum message size results in an exception. When set to `null`, the message size is unlimited. |
20
+
| MaxReceiveMessageSize | 4 MB | The maximum message size in bytes that can be received by the server. If the server receives a message that exceeds this limit, it throws an exception. Increasing this value allows the server to receive larger messages, but can negatively impact memory consumption. When set to `null`, the message size is unlimited. |
21
21
| EnableDetailedErrors |`false`| If `true`, detailed exception messages are returned to clients when an exception is thrown in a service method. The default is `false`. Setting `EnableDetailedErrors` to `true` can leak sensitive information. |
22
22
| CompressionProviders | gzip | A collection of compression providers used to compress and decompress messages. Custom compression providers can be created and added to the collection. The default configured providers support **gzip** compression. |
23
23
| <spanstyle="word-break:normal;word-wrap:normal">ResponseCompressionAlgorithm</span> |`null`| The compression algorithm used to compress messages sent from the server. The algorithm must match a compression provider in `CompressionProviders`. For the algorithm to compress a response, the client must indicate it supports the algorithm by sending it in the **grpc-accept-encoding** header. |
@@ -41,8 +41,8 @@ gRPC client configuration is set on `GrpcChannelOptions`. The following table de
41
41
| HttpClient | New instance | The `HttpClient` used to make gRPC calls. A client can be set to configure a custom `HttpClientHandler`, or add additional handlers to the HTTP pipeline for gRPC calls. If no `HttpClient` is specified, then a new `HttpClient` instance is created for the channel. It will automatically be disposed. |
42
42
| DisposeHttpClient |`false`| If `true`, and an `HttpClient` is specified, then the `HttpClient` instance will be disposed when the `GrpcChannel` is disposed. |
43
43
| LoggerFactory |`null`| The `LoggerFactory` used by the client to log information about gRPC calls. A `LoggerFactory` instance can be resolved from dependency injection or created using `LoggerFactory.Create`. For examples of configuring logging, see <xref:grpc/diagnostics#grpc-client-logging>. |
44
-
| MaxSendMessageSize |`null`| The maximum message size in bytes that can be sent from the client. Attempting to send a message that exceeds the configured maximum message size results in an exception. |
45
-
| <spanstyle="word-break:normal;word-wrap:normal">MaxReceiveMessageSize</span> | 4 MB | The maximum message size in bytes that can be received by the client. If the client receives a message that exceeds this limit, it throws an exception. Increasing this value allows the client to receive larger messages, but can negatively impact memory consumption. |
44
+
| MaxSendMessageSize |`null`| The maximum message size in bytes that can be sent from the client. Attempting to send a message that exceeds the configured maximum message size results in an exception. When set to `null`, the message size is unlimited. |
45
+
| <spanstyle="word-break:normal;word-wrap:normal">MaxReceiveMessageSize</span> | 4 MB | The maximum message size in bytes that can be received by the client. If the client receives a message that exceeds this limit, it throws an exception. Increasing this value allows the client to receive larger messages, but can negatively impact memory consumption. When set to `null`, the message size is unlimited. |
46
46
| Credentials |`null`| A `ChannelCredentials` instance. Credentials are used to add authentication metadata to gRPC calls. |
47
47
| CompressionProviders | gzip | A collection of compression providers used to compress and decompress messages. Custom compression providers can be created and added to the collection. The default configured providers support **gzip** compression. |
Copy file name to clipboardExpand all lines: aspnetcore/mvc/views/view-compilation.md
+12-2Lines changed: 12 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ author: rick-anderson
4
4
description: Learn how compilation of Razor files occurs in an ASP.NET Core app.
5
5
ms.author: riande
6
6
ms.custom: mvc
7
-
ms.date: 04/13/2020
7
+
ms.date: 04/14/2020
8
8
uid: mvc/views/view-compilation
9
9
---
10
10
# Razor file compilation in ASP.NET Core
@@ -77,13 +77,23 @@ In the following example, runtime compilation is enabled in the Development envi
77
77
78
78
Nocodechangesareneededintheproject's `Startup` class. At runtime, ASP.NET Core searches for an [assembly-level HostingStartup attribute](xref:fundamentals/configuration/platform-specific-configuration#hostingstartup-attribute) in `Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation`. The `HostingStartup` attribute specifies the app startup code to execute. That startup code enables runtime compilation.
79
79
80
+
## Enable runtime compilation for a Razor Class Library
81
+
82
+
ConsiderascenarioinwhichaRazorPagesprojectreferencesa [RazorClassLibrary (RCL)](xref:razor-pages/ui-class) named*MyClassLib*. TheRCLcontainsa*_Layout.cshtml*filethatallofyourteam's MVC and Razor Pages projects consume. You want to enable runtime compilation for the *_Layout.cshtml* file in that RCL. Make the following changes in the Razor Pages project:
*Seethe [runtimecompilationsampleonGitHub](https://github.com/aspnet/samples/tree/master/samples/aspnetcore/mvc/runtimecompilation) for a sample that shows making runtime compilation work across projects.
0 commit comments