7

に問題があります。HttpClient引き続き が発生しHttpRequestException occurred in mscorlib.dllます。以前の作業バージョンを SVN からダウンロードしましたが、同じ例外が引き続き発生します。

何週間も正常に動作しているコードを実行しているにもかかわらず、突然この例外が発生するのはなぜですか?

現在、この単純なコードでデバッグしようとしていますが、何をしても同じ例外が発生します

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept
    .Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(
              "application/json"));
HttpResponseMessage response
    = await client.GetAsync("http://api.themoviedb.org/3/movie/550?api_key=x");
return await response.Content.ReadAsStringAsync();

私のinnerExceptionは次のとおりです。

The remote name could not be resolved: 
    api.themoviedb.org System.Exception System.Net.WebException

試したすべての URL で同じ結果が得られ、それらはすべてブラウザで動作します。例外とスタック トレースは次のとおりです。

res "System.Net.Http.HttpRequestException: An error occurred while sending the request. 
---> System.Net.WebException: The remote name could not be resolved: 'api.themoviedb.org'
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
--- End of inner exception stack trace ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotificat‌​ion(Task task)
4

1 に答える 1

9

これは、ネットワーク上の DNS の問題です。ワークステーション (またはエラーが発生しているサーバー) は、DNS 名「api.themoviedb.org」を解決できません。この DNS 名は、自分のコンピューターとオンラインの他のネットワークから問題なく解決されます。

ローカル ネットワーク管理者に確認してください。

アップデート

したがって、マシンは名前を解決できますが、HttpClient は解決できません。この問題を解決できるかどうか見てみましょう。これは Web サイトではなく、デスクトップ アプリケーションであると仮定します。私が間違っている場合はお知らせください。追加の考慮事項がいくつかあります。

このガイドに従って、ネットワーク トレースを有効にする必要があります: How to: Configure Network Tracing。そのリンクで指定されているように App.config ファイルを構成します。要するに、次のようなものを構成ファイルに追加する必要があります。

<configuration>
    <system.diagnostics>
        <sources>
            <source name="System.Net" tracemode="includehex" maxdatasize="1024">
                <listeners>
                    <add name="System.Net"/>
                </listeners>
            </source>
        </sources>
        <switches>
            <add name="System.Net" value="Verbose"/>
        </switches>
        <sharedListeners>
            <add name="System.Net"
                type="System.Diagnostics.TextWriterTraceListener"
                initializeData="network.log" />
        </sharedListeners>
        <trace autoflush="true"/>
    </system.diagnostics>
</configuration>

必要に応じて値network.logを変更する必要があります。先に進んでそれを行い、出力ファイルを見てください。

ここでの秘訣は、そのファイルを使用して問題の原因を突き止めることです。情報はまばらですが、そのファイルを解釈する方法のヒントについては、ネットワーク トレースの解釈を参照してください。私たちが探しているのは、DNS を解決できなかった理由です。そのファイルで「api.themoviedb.org」を検索してください。必要に応じて、質問を結果で更新してください。そこからお手伝いできるかどうかを確認します.

于 2013-02-28T19:36:02.663 に答える