2017-10-10 7 views
0

Azure関数で現在アクティブなHttpContextまたはHttpRequestMessageにアクセスする必要があります。Azure関数のHttpContext/HttpRequestMessageを外部ライブラリから静的に解決する

HttpRequestMessageを呼び出されたメソッドに渡すことなく、外部参照ライブラリからこれを達成しようとしています。

これはAzureの機能では可能ですか、少なくともIHttpContextAccessor(私のASP.NET Coreプロジェクトで)を使用してどこからでも簡単にアクセスできるASP.NETコアHttpContextにアクセスしようとしています。

ASP.NETコアHttpContextが機能しているかどうかわかりません。

+0

Azure関数でコードをテストしようとしましたか、エラーが発生しましたか? –

+0

Azureポータルで新しいAzure関数を作成しようとしましたが、 "Microsoft.AspNetCore.All"をインポートしようとしました: "2.0.0"しかし "Microsoft.AspNetCore.Http;を使用しています"私はこのエラーが表示されます: "型または名前空間の名前 'AspNetCore'は名前空間 'Microsoft'(アセンブリ参照がありませんか?)に存在しません。私は、関数がHttpContextをサポートしていない場所も読んでいます... –

+0

どのバージョンの関数を使用していますか?プレビュー.NET Coreバージョン? – mathewc

答えて

1

いいえ、グローバルなhttpコンテキスト/状態へのアクセスは不可能であり、推奨さえありません。実際には、関数に渡されるHttpRequest/HttpRequestMessageでのみ操作し、必要に応じて他のヘルパー/ライブラリに渡す必要があります。

アクセスしようとする可能性のあるグローバル/静的情報は信頼できず、将来内部機能実行モデルに基づいて変更される可能性があります。

+0

ありがとうマシュー。私は古い.NETインフラストラクチャを.NETコアに書き直しています。これにはログモジュールが含まれています。このログモジュールは、ネットワーク情報、プロセス情報、ホスト情報(cpu/memory/osなど)、さらにHttpContext(基本的にポスト/取得パラメータ、クライアントIP、ユーザエージェント、フルページパスなど)。各コンシューマ(プロジェクト)がこのインフラストラクチャライブラリを参照し、例外イベント(内部ライブラリ例外の場合)を処理するために登録するか、または参照プロジェクトで例外が発生した場合はLogs.Write(ex)を使用することができます。 1/2 –

+0

ASP.NETプロジェクトでは、global.asaxですべての例外を取得でき、HTTP情報を取得するために現在のHttpContextを簡単に解決できます。 ASP.NET CoreではIHttpContextAccessorを使用する必要がありましたが、最終的にはうまく機能しました。このアーキテクチャを有効にするためにAzure関数で何ができますか?私は明示的にキャッチしている例外については、 "HttpRequestMessage"をLogs.Write()に渡すことができます(ただし、毎回それを渡すのは面倒です)が、内部エラーがログ内で捕捉された場合、どうすれば現在のHTTPセッション値を解決できますか?どうもありがとう。 2/2 –

関連する問題