0

次の方法でBacis-Authenticationを必要とするRESTサービスを使用します。

private void button1_Click(object sender, EventArgs e) {
    try {
        var url = "http://172.34.1.111:8088/ustrich/rest/projects/pid/1234";
        using (var wc = this.CreateWebClient(url)) {
            var stopWatch = new Stopwatch();
            stopWatch.Start();
            var s = wc.DownloadString(url);
            stopWatch.Stop();
            this.label1.Text = stopWatch.Elapsed.ToString();
            this.textBox1.Text = s;
        }
    } catch (Exception ex) {
        this.textBox1.Text = ex.ToString();
    }
}

protected WebClient CreateWebClient(string url) {
    var webClient = new WebClient();
    var cache = new CredentialCache { { new Uri(url), "Basic", new NetworkCredential("rest", "rest") } };
    webClient.Credentials = cache;
    webClient.Headers.Add("Content-Type", "text/xml; charset=utf-8");
    webClient.Encoding = Encoding.UTF8;
    return webClient;
}

問題は、Test-Applicationを起動してこのコードを実行すると、初めてwc.DownloadString(url)で約5秒かかることです。フォローコール、ボタンの秒などをクリックすると、300msしかかかりません。今私の質問:私のコードに何か問題がありますか?最初の呼び出しに5秒かかるという問題を解決するために、そこで何かを最適化できますか?ご協力いただきありがとうございます。

4

1 に答える 1

0

コードを初めて実行すると、プリコンパイルされます。今回はいつも遅くなります。コードをビルドするときに MSBUILD を使用してこれを行うことができると思いますが、それは時間をプロセスの別の部分に移すだけです。本番環境では、これはワーカー プロセスが再起動するたびにのみ発生します。

于 2012-07-26T07:55:44.760 に答える