2011-08-28 3 views
0

Mon application de test simple fonctionne très bien sur mon serveur IIS local. Quand je publierai mon environnement d'hébergement partagé (discountasp.net), l'appel AJAXAsp.net MVC 3 appels Ajax FullCalendar échouent

$("#calendar").fullCalendar({ 
      eventSources: [{ 
       url: '/Home/GetCurrentMonth', 
       type: 'Get', 
       error: function() { 
        alert('there was an error while fetching events!'); 
       } 
      }] 

     }); 

échoue. Firebug montre le get arriver avec les params appropriés et donne une erreur '404 Not Found'. Et je peux voir que la méthode du contrôleur 'GetCurrentMonth' n'est jamais appelée (avec un code de log \ audit que j'ai mis). Comme tout fonctionne bien sur mon serveur IIS local et que je ne peux pas me connecter avec IIS7 Manager sur le site distant pour obtenir un 'Failed Request Tracing' .. Je suis coincé.

S'il n'y a pas de paramètre magique web.config (oh s'il vous plaît!) Je me contenterais d'une recommandation d'un 'environnement d'hébergement partagé' qui supporte ASP.NET MVC 3 où fonctionne FullCalendar et je déplacerais l'application (mon environnement d'hébergement actuel a été beaucoup moins qu'utile).

Répondre

3

Ne jamais coder les URL comme vous l'avez fait. Utilisez toujours des aides url lors de la génération dans urls une application ASP.NET MVC:

$('#calendar').fullCalendar({ 
    eventSources: [{ 
     url: '@Url.Action("GetCurrentMonth", "Home")', 
     type: 'GET', 
     error: function() { 
      alert('there was an error while fetching events!'); 
     } 
    }] 
}); 

Ou si cela est dans un fichier javascript séparé dans lequel vous n'avez pas accès au code côté serveur une possibilité est d'utiliser par exemple HTML5 Data- * attributs, comme ceci:

<div id="calendar" data-url="@Url.Action("GetCurrentMonth", "Home")"></div> 

puis dans votre fichier javascript séparé:

$('#calendar').fullCalendar({ 
    eventSources: [{ 
     url: $('#calendar').data('url'), 
     type: 'GET', 
     error: function() { 
      alert('there was an error while fetching events!'); 
     } 
    }] 
}); 

Je parie 50 dollars la raison pour laquelle votre code ne fonctionne pas lorsque vous avez déployé est car il existe un répertoire virtuel ajouté par IIS. Donc, l'URL correcte n'est pas /Home/GetCurrentMonth mais /YourApplicationName/Home/GetCurrentMonth. Pour éviter tous ces problèmes, vous devez toujours utiliser des aides lors de la génération d'URL.

+0

"il existe un répertoire virtuel ajouté par IIS", êtes-vous sûr? Une recherche de "site: discountasp.net" a retourné de nombreux résultats en utilisant des sous-domaines à la place (par exemple stocks.paul.discountasp.net) – bzlm

+0

@bzlm, non je ne suis pas sûr, je ne connais pas ce site d'hébergement, mais étant donné les symptômes Je parie 50 dollars que c'est son problème. 404 erreurs lors du passage à la production => dans 99,999999% des cas dus à des URL codées en dur. –

+0

seulement si c'est le seul lien d'action codé en dur, non? – bzlm