J'essaie de créer un site Web hébergé sur Azure en tant que site gratuit. Il utilise MVC4, avec KnockoutMVC. Le site Web met à jour un tableau toutes les 4 secondes à partir du contrôleur. Le code s'exécute sans problème localement, mais lorsque je le déploie sur le site Web Azure, il ne traite pas les mises à jour.
J'ai maintenant commencé un tout nouveau projet MVC 4, avec quelques fonctions simples utilisant knockout, affichant l'heure actuelle, et la mettant à jour tous les 0,5 seconde à partir du contrôleur, il utilise la même structure que le javascript que j'ai écrit pour le site web approprié. Le problème est le même, et il semble que l'appel à ko.ServerAction arrête la fonction javascript.
Voir
@using PerpetuumSoft.Knockout
@model MVCHelloWorld.Models.HelloWorldModel
@{
var ko = Html.CreateKnockoutContext();
}
<script type="text/javascript">
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
// add a zero in front of numbers<10
m = checkTime(m);
s = checkTime(s);
document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
@ko.ServerAction("Index", "HelloWorld");
t = setTimeout(function() { startTime(); }, 500);
}
function checkTime(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
</script>
<body onload="startTime()">
<h2>Hello World - 2</h2>
<div id="time"></div>
<label>Knockout time</label>
@ko.Html.Span(m => m.Time)
</body>
@ko.Apply(Model)
Contrôleur
namespace MVCHelloWorld.Controllers
{
public class HelloWorldController : BaseController
{
public HelloWorldModel model = new HelloWorldModel();
public ActionResult Index()
{
GetTimeDoCalculation();
return View();
}
public void GetTimeDoCalculation()
{
model.Time = DateTime.Now.ToString("H:mm:ss");
}
}
}
Modèle
namespace MVCHelloWorld.Models
{
public class HelloWorldModel
{
public string Time { get; set; }
}
}