问题标签 [grpc-dotnet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1169 浏览

c# - 如何使用 Automapper 将 proto 文件重复类型的属性映射到 C# 类的列表属性?

我有一个包含以下详细信息的原型文件:

TestGRPC.proto:

这用于具有以下结构的 DTO 类的 asp.net core 3.1 gRPC 客户端项目:

任何人都可以通过提供解决此问题的指导来帮助我。

0 投票
1 回答
1016 浏览

asp.net-core - 如何在 gRPC proto 文件中支持 C# 动态类型

我们的 asp.net 核心应用程序中有一个接受dynamic对象的 POST 操作。

我们希望将此 POST 操作转换为 gRPC 服务器,并且希望继续dynamic在 gRPC 服务中接收对象。dynamicgRPC protobuf 文件定义中的 C# 定义等价物是什么?或者,如果这无法实现,那么接收动态对象的最佳方式是什么?

0 投票
0 回答
468 浏览

go - 从 golang 客户端调用 dotnet grpc 服务时出错

夏普:

去代码:

调用它时,我从客户端代码中得到错误:

在服务器端获取:

0 投票
1 回答
3153 浏览

c# - 返回 Grpc 验证错误的更好方法是什么

我想知道 grpc 服务中是否存在字段验证模式。

我知道 RpcException 具有元数据预告片属性,并且我可以添加有关我的错误的其他信息。

我的问题是:有一个要遵循的模式吗?如果不是,下面哪个例子会更符合预期。

示例 1:

示例 2:

我想接受此响应并在需要时使用 RFC 7807 规范将其转换为 json

0 投票
0 回答
520 浏览

c# - Microsoft.VisualStudio.Web.Host.exe 在 Visual Studio 中锁定 grpc_csharp_ext.x86.dll

我看到 Visual Studio 进程Microsoft.VisualStudio.Web.Host.exe为 gRPC 锁定本机 dll 的问题grpc_csharp_ext.x86.dll

我们有一个在 IIS 中运行的 .net Framework 4.6.1 Web 应用程序,在 Windows 机器(Windows10 和服务器)上。它使用 gRPC 并与它捆绑以下 dll

据我所知,gRPC库在这里为它的架构加载了正确的dll https://github.com/grpc/grpc/blob/2780136fcf9bd268aaddea74b115fbc2faa97c61/src/csharp/Grpc.Core/Internal/NativeExtension.cs#L83和从不尝试释放它。我相信这没关系,因为一旦运行过程停止,所有东西都应该被释放。

但是,如果您在 IIS 中运行应用程序并从 Visual Studio 附加调试器,然后尝试重新构建应用程序,Visual Studio 将要求您停止调试,执行构建并遇到此问题,主要表现为:

我在 IIS 锁定相同的 dll 时遇到了类似的问题,并且我知道针对 gRPC https://github.com/grpc/grpc/issues/21867提出的这个问题导致Grpc_SkipNativeLibsCopy被创建。此问题已通过添加预构建应用程序池回收得到缓解。

然而,似乎没有任何方法可以解决这个问题,唯一的做法似乎是终止Microsoft.VisualStudio.Web.Host.exe进程。

任何人都可以帮助我们进一步了解如何阻止这种情况发生,或者找到一种更好的方法来缓解这个问题吗?

0 投票
0 回答
1305 浏览

c# - grpc-dotnet 身份验证 jwt 不记名令牌

我正在寻找一些反馈或指导。我在 dotnet core 3.1 中构建了一个 grpc 服务器和客户端。只有这个客户端会与服务器对话,但仍然需要保护服务器端点。我正在尝试对其实施身份验证安全性,而 jwt 不记名令牌似乎是一条好路。我正在尝试遵循此处的示例(来自此MS Doc),这似乎是一个非常简单的实现,但是对于生产使用来说似乎不安全,因为任何人都可以点击生成令牌端点。我认为它可以修改和实现在获取令牌请求中传递的共享密钥。这似乎是一个好方法或其他想法?

除了这部分,我还有一个关于客户端代码的问题,我不太明白。在客户端启动时,它通过调用 CreateAuthenticatedChannel() 建立一个 grpc 通道,如果设置了 _token,它似乎只添加承载令牌。在客户端启动并点击第三个之前,您不会获得令牌,但我看不到通道或客户端在哪里重建以包含元数据令牌值。该示例似乎有效但不理解它。

}

0 投票
1 回答
590 浏览

.net - 为什么服务器上收到的 gRPC 截止日期与客户端发送的截止日期不同

我正在使用 gRPC csharp 实现来让两个服务相互通信。

从客户打来电话时,我正在设置截止日期。在服务器上接到电话时,我正在阅读截止日期。令我惊讶的是,截止日期值不一样,相差几分之一秒。

gRPC 文档说 Deadline 是一个固定的时间点。所以我希望在服务器上收到相同的值,但事实并非如此。

我可以看到它提到了100ns的舍入,但在我的情况下它更多。

可以考虑飞行时间吗?我找不到这样的逻辑,这将违反固定时间点的概念。

gRPC 源代码中的gRPC internalTimespec和 c#之间的转换是否存在错误?DateTime

示例(伪)代码:

控制台输出为:

2020-09-22T14:14:20.8359860Z为客户

2020-09-22T14:14:21.2910442Z用于服务器

0 投票
1 回答
298 浏览

asp.net-core - 如何在 gRPC .NET Core 的证书存储中指定证书?

我正在尝试在 gRPC .NET Core 3.1 的证书存储中指定一个证书。

我找到了一种通过设置路径来指定证书的方法。

https://medium.com/@mcilis/how-to-publish-net-core-grpc-server-as-a-windows-service-dd562a1e263d

但是是否可以使用 appsettings.json 在 Windows 证书存储中指定一个?还是只能通过代码实现?

0 投票
1 回答
872 浏览

c# - gRPC 服务器 .net 框架 - 如何配置为使用 TLS 证书

我是 gRPC 的新手,只是在探索我的 .net 框架服务器中的通信选项。

由于服务器项目的年龄和规模,可能需要一段时间才能将它们移植到 .net 5+,但我想允许更新的 .net 5+ 客户端连接,所以想替换现有的服务器 WCF与当前的东西。

我的 WCF 总是使用 Windows 身份验证进行加密,由于跨域问题,我迫不及待地想要摆脱它,所以想使用 TLS。

我发现很难找到有关如何执行此操作的示例,尤其是在 .net 框架中,因为大多数示例都是 .net 核心。

这是一些典型的(ish)示例代码:

忽略AddCodeFirst这些是其他一些实验,但是每个示例似乎都使用ServerCredentials.Insecure,并且他们都说不要在生产中使用它(我不想这样做),但令人沮丧的是,他们没有展示如何使用 TLS 证书。我怎样才能做到这一点?

此外,对于 .net 框架客户端,典型代码是

唯一的选择似乎是Insecure

最后,对于服务器,是否可以使用自签名证书?

0 投票
1 回答
192 浏览

.net-core - 如何在 .net api 网关中使用 gRPC 服务?

我想将 gRPC 服务与 api 网关一起使用。如何将它用于 .netcore 中的 gRPC?可以使用 Ocelot 完成吗?