WebApi 2プロジェクトのDelegatingHandlerに次のコードがあります。私のマシン上でnull条件付き演算子、一部のマシンで期待どおりに動作しない
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
var content = await request.Content?.ReadAsStringAsync();
_log.Information("Received {request} with content body: {content}.", request, content);
// Run the rest of the request pipeline.
var result = await base.SendAsync(request, cancellationToken);
var responseContent = await result.Content?.ReadAsStringAsync();
_log.Information("Returning {result} with content body: {responseContent}.", result, responseContent);
return result;
}
予想通り、これは動作し、(result.contentがnullになります)301リダイレクトで応答時に私はresponseContentを取得== nullを。ただし、同僚のマシンでは、この行でヌル参照例外を受け取ります。我々は両方の次のように限り、我々が言うことができるように違いがあり、4.5.1ランタイムを使用している、次のとおりです。
- 私はここで、(彼はVS2015 プロフェッショナルSP2を使用しています、(それが動作します)VS2015エンタープライズSP2を使用していますそれが動作していないマシンは私がいないインストール2つの4.5.1セキュリティアップデート(KB2901126 & KB2931368)を持っているように見えますthe .NET versions and service packs I have installed as well as the ones he has installed ...
- それは
忍者編集)動作しません。 、これらの原因の1つは訴える?確認が必要なコンパイラやコンパイラオプションに違いがありますか?あるいは、私は簡単な説明をしているものを探していますか?
古い学校のヌルチェックを試しましたか? – Slugart
異なるマシン上の同じバイナリ...または別のコンパイル?別のコンパイルの場合はILコードを比較 –
result.Contentがnullの場合、NullReferenceExceptionをスローする "await null"になります。あなたはあなたのケースでresult.Contentが本当にnullであることを確認しますか? – Evk