問題タブ [flurl]
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.
.net - flurl は Visual Studio 2017 でどのように構築できますか?
ここの github にあるライブラリ FLURL を構築しようとしています: Flurl、HTTP 拡張ライブラリ、Visual Studio 2017 Enterprise バージョンを搭載したマシンで。Xamarin のすべてのオプション、C# のすべてのオプションを選択しましたが、C++ のオプションは 1 つも選択していません (これは C# のライブラリであるため、まったく問題ありません)。特定のライブラリ、特に MS 自体のライブラリを更新する際に、NuGet で多数の失敗に遭遇しました。それが助けになる場合は、後で投稿できますが、現時点では質問を混乱させたくありません.
T4 で Flurl ライブラリを使用してエッジ条件に取り組んでいるため、ライブラリを更新する必要があります。Flurl を使用して T4 スクリプトから呼び出しています (理由は気にしないでください。それは重要ではありません)。私がそうしている問題は、ライブラリの残りの部分 (それ自体のコードのかなりの部分) が Newtonsoft Json v 10 を使用していることです。Flurl は 9.x に制限されています。.NET は違いを処理し、必要に応じてライブラリをロードできますが、T4 はできません。一度に 1 つのバージョンしかロードできないため、v10 をロードしようとすると見つからないというエラーが発生するか、別々のパスを介して両方をロードしようとするとメソッドが見つからないというエラーが発生します。T4 では、内部コマンドを使用してパッケージを具体的にロードする必要があり、同じライブラリの複数のバージョンをロードするための規定はありません。
そのため...最新かつ最高のMSおよびNewtonsoftライブラリを使用する「公式」更新があるまで、アイデアはローカルバリアントを構築し、それをローカルNuGetサーバーリポジトリに配置して、公式更新が来るまでそれを使用することでしたアウト。前述のエラーのため、私だけができません。ですから、誰かが flurl ライブラリの構築を手伝ってくれるなら、彼らはすでにトリックが何であるかを知っていて、知っているので、私は感謝します。私の現在の環境は、これを行うために特別に構築されたので(VMWareが大好きです)、Win 10クリエーターであるVS2017に最新のアップデートがすべて含まれています。
flurl をビルドするにはどうすればよいですか?
更新: 作成者はコードの更新について非常に親切に通知してくれましたが、.zip でソースを複製し、.zip を開き、flurl をコピーするだけの (予想される) コンパイル プロセスに従っても、同じものをビルドできません。ソース ツリー、VS2017 で flurl .sln ファイルを開き、「再構築」を押します。すべてのエラーは、PackageTester.Shared.Tester.cs という 1 つのファイルにあります。私の VS は、「flurl」自体への参照がないことについて激しく不満を言っています。実際、参照リストは flurl と flurl.http が「欠落」していることを示しています。NuGet にアクセスして最新の flurl を取得することでこれを「修正」できると思いますが、flurl をコンパイルするには flurl が必要であるという古典的な「鶏と卵」の問題に直面していますか? ここに座って笑いながら、私は' flurl をうまく構築し、この素晴らしいライブラリを使い続けるためには、この最後の小さな問題をどのように修正すればよいのか疑問に思っています。潜在的な皮肉な解釈を避けるために、私は非常に真剣です - 私は flurl が本当に好きで、T4 問題への回避策を書かなければならないのは苦痛でした。私はそれをやり遂げましたが、私はむしろこの優れたライブラリを使用し、そのようなことに悩む必要はありません。だから...作者がこの最後のちょっとした癖を親切に修正してくれるなら、私は幸せな男になるだろう. むしろ、この優れたライブラリを使用して、そのようなことで自分を悩ませる必要はありません。だから...作者がこの最後のちょっとした癖を親切に修正してくれるなら、私は幸せな男になるだろう. むしろ、この優れたライブラリを使用して、そのようなことで自分を悩ませる必要はありません。だから...作者がこの最後のちょっとした癖を親切に修正してくれるなら、私は幸せな男になるだろう.
更新された更新: パッケージ ソースを調べて、「all」ではなく api.nuget.org に設定されていることを確認した後、設定を変更し、パッケージを復元したところ、すべてが正常になりました。ライブラリが正常にビルドされます。flurl を使用せずに flurl をビルドする方法を知っていると便利ですが、それは二次的なことです。これは、その仕事を行うライブラリ ビルドがあり、さらに重要なことに、私のライブラリが使用するものと同じバージョンの Newtonsoft.Json を使用するため、私の T4 環境を使用するためです。問題は解決されるはずです。
c# - FlurlClient を使用するカスタム HttpClientHandler は ClientCertificate を使用しません
Web リクエストにクライアント証明書を追加する必要があり、次の方法でそれを達成しようとしました: Stackoverflow
この回答の最後に、「FlurlClient の方法」が示されています。グローバル FlurlHttp 構成の代わりに FlurlClient を使用および構成します。私はこれを試しましたが、うまくいきませんでした。
問題を示すために、新しい.NET Coreコンソール アプリケーションを 作成しました。
はX509HttpFactory
、リンクされた StackOverflow の回答からコピーされます (ただし、HttpClientHandler
の代わりに使用しますWebRequestHandler
):
したがって、グローバル FlurlHttp 構成の使用は機能しており、FlurlClient の構成は機能していません。なんで?
c# - パスセグメントに数字 (ハッシュ) 文字 # を含める方法は?
名前に「 # 」が含まれるファイルを (既存の Flurl-Http エンドポイント [1] を使用して) ダウンロードする必要があります。これはもちろん、uri-fragment 検出と競合しないように %23 にエスケープする必要があります。
しかし、Flurl は常に残りをエスケープしますが、この文字はエスケープしません。その結果、uri-fragment として解析されたため、パスの半分とすべてのクエリ パラメータが欠落している動作しない uri が生成されます。
戻り値:http://server/api/item%20#123.txt
これは、http リクエスト (を使用Flurl.Http
) が、存在しないリソースのダウンロードのみを試みることを意味しますhttp://server/api/item%20
。
セグメントをプリエスケープしても、結果はまったく同じになります。
再び戻ります: http://server/api/item%20#123.txt
.
この「魔法」を止める方法はありますか?
[1] これは、入力がFlurl.Url
変更する必要のある既存のインスタンスであるデリゲート/インターフェイスがあることを意味します。