.NET 4.7.2を実行しているWPFからgRPCサービスにアクセスするにはどうすればよいですか?

ロニー・ラーマン

.NET 4.7.2で実行されているレガシーWPFアプリケーションから使用する必要がある、.NETCoreでgRPCサービスを作成しました。既存のWPFアプリケーションは巨大であり、すぐに.NET Coreに変換することはできず、gRPCを使用するだけの価値はありません。私の質問は、.NET 4.7.2 WPFからgRPCサービスを使用する方法はありますか?

JanW

私はついにこの問題の実用的な解決策を手に入れました:

  • Asp .NET Core 3.1サーバー(新しいgrpc-dotnetパッケージを使用)および
  • .NET Framework 4.7.2 WPF-クライアント(古いCラッパーgrpcパッケージを使用)

主な問題は、リモートクライアントから自己署名SSLサーバー証明書を受け入れるソリューションを見つけることでした。これは、このシナリオでは必須です。

サーバーは、ここで提供されるようなソリューションを使用して生成された証明書を取得します(ソリューションは有効な証明書でも機能します):https//gist.github.com/mivano/356d4f0354d997370e3c2e62809cdeef

  • Subject / FriendlyNameをより意味のあるものに調整
  • DnsNameをサーバーのIPまたはホスト名(クライアントが使用する)に調整しました
  • NotAfterを希望の終了日に調整
  • 調整された$ pfxPassword

ここで言及する重要なこと:サーバーのDNSまたはIPはクライアントによって検証されるため、証明書の一部である必要があります。

gRPCサーバーはこのように構成されました(.appsettings.jsonを介して実現することもできます)。

 webBuilder.ConfigureKestrel(
    options =>
    {
        options.Listen(
            IPAddress.Any,
            <your port>,
            listenOptions =>
            {
                listenOptions.UseHttps("<your.pfx path>", "<your passphrase>");
                listenOptions.Protocols = HttpProtocols.Http2;
            });
    });

gRPCクライアント:

  • .pfxから.pemファイルを作成します(opensslを使用)。

openssl pkcs12 -in "<pfx path>.pfx" -out "<pem path>.pem" -clcerts

.NET FrameworkでgRPCクライアントをどのように作成しますか?

  • クライアントで.pemファイルを読み取り、gRPCチャネルに使用します。

チャネル:

var channelCredentials = new SslCredentials(
    File.ReadAllText("<path to pem>.pem"), null, verifyPeerCallback => true);
var serviceChannel = new Channel("<DnsName from cert", <port>, channelCredentials);
var serviceProxy = new GrpcService.GrpcServiceClient(serviceChannel );

クライアントは、適切なHttpClientHandlerとアタッチされたServerCertifacteCustomValidationCallbackを使用して正規のHttpClient.Getを使用して、サーバーから証明書を動的にダウンロードするように実装することもできます。PEMは、サービスチャネルを作成する前にメモリに作成する必要があります:https//github.com/grpc/grpc/issues/8978#issuecomment-283469676

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CentOS 7でIPv4接続を使用してIPv6サービスに接続するにはどうすればよいですか?

分類Dev

wcfサービスで動作するようにlog4netを設定するにはどうすればよいですか?

分類Dev

MNISTデータ(R)の各4×4サブスクエアのグレートーンを平均して、各28×28画像を7×7画像に投影するにはどうすればよいですか?

分類Dev

IIS7を介してASP.NET3.5でサーバーのデスクトップと対話するプロセスを開始するにはどうすればよいですか?

分類Dev

c#.NET MVC 4-Ninjectサービスを使用するQuartzジョブを作成するにはどうすればよいですか?

分類Dev

デフォルトで.Net3.5を使用しているエンドユーザー向けにWindows7で.Net4.5 Webアプリケーションを実行するにはどうすればよいですか?

分類Dev

.NET 4ランタイムでPowerShellを実行するにはどうすればよいですか?

分類Dev

外部サービスを使用せずにASP.NETでクライアントの外部IPv4アドレスを取得するにはどうすればよいですか?

分類Dev

クレームベース認証を.NET4アプリケーションに適用するにはどうすればよいですか?

分類Dev

.NET 4でアセンブリを「完全に信頼できる」ものとして設定するにはどうすればよいですか?

分類Dev

64ビットのWindows7で32ビットのvb.netプログラムを実行するにはどうすればよいですか?

分類Dev

asp.netプロジェクトをローカルで実行するにはどうすればよいですかIIS7

分類Dev

1つのビューにCreateビューコードとインデックスビューコードを混在させました。では、asp.net MVC4のそのビューでデータベースからデータを取得するにはどうすればよいですか?

分類Dev

Android Studio:Androidサポートv4およびv7のソースを確認するにはどうすればよいですか?

分類Dev

プログラムでlog4netにログファイルを解放させてアクセスできるようにするにはどうすればよいですか?

分類Dev

ASP.NET MVC4でIDをあるビューから別のビューに運ぶにはどうすればよいですか?

分類Dev

EntityFramework7とAsp.Net5を使用してSQLストアドプロシージャを呼び出すにはどうすればよいですか

分類Dev

Ionic 4 / Angular7の@ViewChildからnativeElementを取得するにはどうすればよいですか?

分類Dev

継承セキュリティルールに違反せずに、.NET 4以降でISerializableを実装するにはどうすればよいですか?

分類Dev

HL7メッセージを使用してDCM4CHEで患者のモダリティワークリストを作成するにはどうすればよいですか?

分類Dev

ASP .Net(Aspx)のJavascriptからアクセスするWebサービスメソッドを作成するにはどうすればよいですか?

分類Dev

asp .net MVC4を使用して別のフォームからチェックボックス値を取得するにはどうすればよいですか?

分類Dev

Windows7にはデフォルトで.NET4がインストールされていますか?

分類Dev

ASP.NET Razor構文を使用してブートストラップv4アルファのフォーム入力検証クラスを適用するにはどうすればよいですか?

分類Dev

Win7ホスト上のvirtualboxでrawディスク(ext4)のゲストOS(Linux)で書き込みアクセスを取得するにはどうすればよいですか?

分類Dev

使用可能なすべてのスレッドを使い切ることなく、ASP.NET MVC Webアプリケーションでlog4netと非同期にログを記録するにはどうすればよいですか?

分類Dev

Windows 7でwarファイルをサービスとして実行するにはどうすればよいですか?

分類Dev

OSLC4Jでは、7つのプロパティが関連付けられているリソースにプロパティを追加するにはどうすればよいですか?

分類Dev

ASP.net MVC 4でブラウザにテキストをストリーミングするにはどうすればよいですか?

Related 関連記事

  1. 1

    CentOS 7でIPv4接続を使用してIPv6サービスに接続するにはどうすればよいですか?

  2. 2

    wcfサービスで動作するようにlog4netを設定するにはどうすればよいですか?

  3. 3

    MNISTデータ(R)の各4×4サブスクエアのグレートーンを平均して、各28×28画像を7×7画像に投影するにはどうすればよいですか?

  4. 4

    IIS7を介してASP.NET3.5でサーバーのデスクトップと対話するプロセスを開始するにはどうすればよいですか?

  5. 5

    c#.NET MVC 4-Ninjectサービスを使用するQuartzジョブを作成するにはどうすればよいですか?

  6. 6

    デフォルトで.Net3.5を使用しているエンドユーザー向けにWindows7で.Net4.5 Webアプリケーションを実行するにはどうすればよいですか?

  7. 7

    .NET 4ランタイムでPowerShellを実行するにはどうすればよいですか?

  8. 8

    外部サービスを使用せずにASP.NETでクライアントの外部IPv4アドレスを取得するにはどうすればよいですか?

  9. 9

    クレームベース認証を.NET4アプリケーションに適用するにはどうすればよいですか?

  10. 10

    .NET 4でアセンブリを「完全に信頼できる」ものとして設定するにはどうすればよいですか?

  11. 11

    64ビットのWindows7で32ビットのvb.netプログラムを実行するにはどうすればよいですか?

  12. 12

    asp.netプロジェクトをローカルで実行するにはどうすればよいですかIIS7

  13. 13

    1つのビューにCreateビューコードとインデックスビューコードを混在させました。では、asp.net MVC4のそのビューでデータベースからデータを取得するにはどうすればよいですか?

  14. 14

    Android Studio:Androidサポートv4およびv7のソースを確認するにはどうすればよいですか?

  15. 15

    プログラムでlog4netにログファイルを解放させてアクセスできるようにするにはどうすればよいですか?

  16. 16

    ASP.NET MVC4でIDをあるビューから別のビューに運ぶにはどうすればよいですか?

  17. 17

    EntityFramework7とAsp.Net5を使用してSQLストアドプロシージャを呼び出すにはどうすればよいですか

  18. 18

    Ionic 4 / Angular7の@ViewChildからnativeElementを取得するにはどうすればよいですか?

  19. 19

    継承セキュリティルールに違反せずに、.NET 4以降でISerializableを実装するにはどうすればよいですか?

  20. 20

    HL7メッセージを使用してDCM4CHEで患者のモダリティワークリストを作成するにはどうすればよいですか?

  21. 21

    ASP .Net(Aspx)のJavascriptからアクセスするWebサービスメソッドを作成するにはどうすればよいですか?

  22. 22

    asp .net MVC4を使用して別のフォームからチェックボックス値を取得するにはどうすればよいですか?

  23. 23

    Windows7にはデフォルトで.NET4がインストールされていますか?

  24. 24

    ASP.NET Razor構文を使用してブートストラップv4アルファのフォーム入力検証クラスを適用するにはどうすればよいですか?

  25. 25

    Win7ホスト上のvirtualboxでrawディスク(ext4)のゲストOS(Linux)で書き込みアクセスを取得するにはどうすればよいですか?

  26. 26

    使用可能なすべてのスレッドを使い切ることなく、ASP.NET MVC Webアプリケーションでlog4netと非同期にログを記録するにはどうすればよいですか?

  27. 27

    Windows 7でwarファイルをサービスとして実行するにはどうすればよいですか?

  28. 28

    OSLC4Jでは、7つのプロパティが関連付けられているリソースにプロパティを追加するにはどうすればよいですか?

  29. 29

    ASP.net MVC 4でブラウザにテキストをストリーミングするにはどうすればよいですか?

ホットタグ

アーカイブ