Я создал класс, у которого есть таймер, который вызывает функцию, созданную в моей учетной записи Azure, для возврата состояния Azure, возвращаемое значение кэшируется.В классе у меня есть WEB API, который возвращает кэшированное значение.
У меня есть программное обеспечение Windows Form, которое вызывает WEB API раз в минуту, чтобы получить статус.
Все это прекрасно работает в разработкена локальном хосте, но не в производстве.
[EnableCorsAttribute("*", "*", "*")]
public class AzureStatusController : ApiController
{
private readonly int statusTimerInterval = 60 * 1000; // every 60 seconds
private static bool cloudStatus = false;
static HttpClient client;
private static string url = "";
private static string code = "";
private System.Threading.Timer cloudTimer;
/// <summary>
/// Classes Ctor
/// </summary>
public AzureStatusController()
{
cloudTimer = new System.Threading.Timer(OnAzureStatusCallback, null, 0, statusTimerInterval);
url = ConfigurationManager.AppSettings["CloudFunctionsBaseUrl"].ToString();
code = ConfigurationManager.AppSettings["CloudStatusCode"].ToString();
client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}
private void OnAzureStatusCallback(object state)
{
var status = false;
if (client != null && client.BaseAddress.ToString().Length > 30 && code.Length > 70)
{
try
{
var response = client.GetAsync(code);
if (response != null && !response.IsFaulted)
{
var result = response.Result;
if (result != null && result.IsSuccessStatusCode && result.Content != null)
{
string responseString = result.Content.ReadAsStringAsync().Result.Trim().ToLower();
status = (responseString.Contains("ok"));
}
}
}
catch
{
status = false;
}
}
cloudStatus = status;
}
/// <summary>
/// Returns the cached value of the Azure status
/// </summary>
/// <returns></returns>
[AllowAnonymous]
[HttpGet]
[Route("api/AzureStatus")]
public IHttpActionResult Get()
{
return Ok(cloudStatus);
}
}
У кого-нибудь есть идеи, что мне не хватает?