0

概要:

Hangfireを使用して、毎晩期限切れのウィジェットをチェックするなど、設定された間隔で実行中のバックグラウンド ジョブを処理しています。実行中のジョブから ASP.NET Web Api 2 エンドポイント (おそらく GET と POST) にヒットする最良の方法を知りたいです。

もののバージョン(これが重要な場合)

  • .NET 4.5 MVC 5
  • Web API 2(.1?)
  • ホスティング サイト Windows azure
  • 8 GB の RAM脚注 (1) を参照
  • IISエクスプレスを使用したローカル開発者(またはVS2013に組み込まれているものは何でも)

私の具体的な質問

  1. この実装は、バックグラウンド タスクのようなものから API への接続を開閉する適切な方法ですか?
  2. 以下のコードで、client.BaseAddress 文字列 ( http://whatever.xxx ) を動的に取得するにはどうすればよいですか? 2 番目の疑似コード スニペットにあるようなことができれば、非常に便利です。

このブログ投稿から取得したコードは次のとおりです

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:43736/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    // HTTP GET
    HttpResponseMessage response = await client.GetAsync("api/do/someshiz/");
    if (!response.IsSuccessStatusCode)
    {
        //todo: stuff
    }
}

これはすでにかなりきれいだと思いますが、私は HttpClient クラスの使用にひどく慣れておらず、ほとんどの API インタラクションは JavaScript からのものです。

HttpClient.BaseAddress 文字列を取得するためにやりたいこと

if(IAmRunningThisOnMyLocalMachine) {
    baseAddress = "http://localhost:1337/"
} else {
    //I Already have a way to determine if I am on the staging server or live site
    if(IsStagingServer){
        // staging server base address
        baseAddress = "http://staging.whatever.com/"
    } else {
        // live base address
        baseAddress = "http://whatever.com/"
    }
}

ルートの else ブランチの場合、それは大したことではなく、これらの文字列は多かれ少なかれ一定です。ローカルで実行しているときは、localhost:AnyPort であるか、IIS Express の他のバリエーションであるかに関係なく、動作させたいと考えています。


1: Just kidding about the RAM, just wanted to see if I could make the read whisper 'wtf' out loud. Please advise if successful

4

0 に答える 0