7
votes

Pourquoi mon projet MVC ne fonctionnera-t-il pas après la publication?

J'ai récemment publié mon premier projet MVC 2 à un serveur Web commercial, exécutant Windows 2008 et qui prend prétendument soutiendra d'autres sites MVC sans problème, mais éprouve des problèmes. Voici la structure de haut niveau du projet. Comme vous pouvez le constater, c'est très simple:

Mais, après la publication du site, et je navigue à l'URL, je reçois "Erreur HTTP 403.14 - Interdit: le serveur Web est configuré pour ne pas répertorier le contenu de ce répertoire."

Ainsi, j'ai contacté l'hôte Web à ce sujet et j'ai été informé que je devais inclure une page d'atterrissage par défaut, telle que Par défaut.aspx, index.aspx, etc. Je doublis cette réponse était précise car je pensais que je pensais que la routage MVC aurait pris soin de cela, mais j'ai fait comme suggéré de toute façon, ajoutant une redirection à mon contrôleur domestique dans la valeur par défaut.aspx.cs CodeBeHind, mais j'ai obtenu une erreur HTTP 404. J'ai ajouté que rediriger les conseils similaires à ceux trouvés dans cet article: http://www.58bits.com/blog/ CommentaireView, GUID, 10B2DDDFA-057C-41D0-BDC7-564B212CE896.ASPX .

Je vais de retour avec l'hôte Web à ce sujet pendant plus d'une semaine, à propos d'une douzaine de réponses et de réponses différentes, mais je n'ai pas été en mesure de trouver une résolution à cela. Je suis sûr C'est une chose simple à résoudre, mais je ne sais pas quoi essayer ou quoi suggérer le support d'hébergement Web qu'ils essaient ensuite.

soooo ... Sachant que la communauté Stackoverflow est plus intelligente que moi et les techniciens de soutien pour ma société d'hébergement Web combinée, mille fois, j'espère que vous pouvez m'aider à travailler pour une résolution ici, donc je peux donc réussir Publiez mon projet et accédez-y sans erreur.


3 commentaires

Je n'ai pas du tout modifié le fichier haccessé. Finalement, je prévoyais de le faire en essayant d'appliquer les meilleures pratiques de référencement sur le site plus tard, mais je n'avais pas encore eu à ce moment-là. Dois-je modifier le fichier hACCESS pour que cela fonctionne?


Le mappage d'applications WildCard est-il configuré dans IIS et est «Vérifiez que le fichier existe» non étendu? (En fait, peut-être que ce n'est pas nécessaire en 2008 - ne peut pas se souvenir)


RUP - Merci pour votre réponse. Mais honnêtement, je ne connais pas la réponse. Une partie du problème ici est que je devais travailler avec une entreprise d'hébergement Web Sorced. Je n'ai donc pas accès à des informations de configuration comme celle-ci. Mais je peux poser des questions à ce sujet et leur proposer des suggestions, que je ferai. En attendant, y a-t-il autre chose qui pourrait causer cela?


5 Réponses :


0
votes

Il se peut que votre production IIS ne dispose pas des fichiers de référence MVC chargés pour votre site. J'ai rencontré le même problème lorsque j'ai chargé un site MVC à un hôte qui dit "Nous soutenons entièrement MVC". Vous pouvez essayer de publier à l'aide de l'option "Tous les fichiers de projet". Je pense que le problème peut également être résolu en entrant dans votre dossier de références et en sélectionnant les références MVC. Je ne suis pas à ma machine de développeur en ce moment mais je crois que vous modifiez une certaine propriété pour les références pour les avoir inclus dans vos fichiers publiés.


1 commentaires

C'est une bonne pensée, même si je pense que j'ai déjà essayé ça. Peut-être que je l'ai fait de mal. Ce que j'ai fait était (1) incluent les références suivantes dans le projet: system.web.routing.dll system.web.abstractions.dll system.web.extensions system.web.mvc ... et (2), définissez le " Copier la propriété locale sur ces références à "True". Est-ce que cela ressemble à ce que vous suggérez, ou auriez-je pu le faire de manière incorrecte?



7
votes

Il y a quelques éléments qui pourraient causer l'erreur:


problème avec les bibliothèques MVC H2>

Le serveur de production peut ne pas avoir les bibliothèques MVC stockées dans le GAC. Pour résoudre ce problème, tout ce que vous avez à faire est d'entrer dans les références CODE> PANIÈRE / Dossier de votre projet MVC Find> System.Web.mvc CODE>, SYSTEM.WEB .Route code> et system.web.abstractions code>. Maintenant, sélectionnez-les par Ctrl kbd> en cliquant sur eux et définissez la copie locale sur true dans la fenêtre Propriétés. P>

Il est difficile de savoir avant de publier ou non que ceci est ou non Le cas, je recommande donc simplement de définir les assemblages pour copier local tout le temps. p>


Page d'atterrissage h2>

Votre page d'atterrissage peut avoir des problèmes. strong> De mon expérience avec ASP.NET MVC, j'ai vu qu'une page d'atterrissage est nécessaire pour que IIS fonctionne correctement. J'utilise la page qui a été incluse dans le modèle ASP.NET MVC 2. Vous devriez comparer le mien sur le vôtre pour voir si vous avez tout ce qui est nécessaire: p>

par défaut.aspx: p> xxx pré>

par défaut.aspx.cs: p >

using System.Web;
using System.Web.Mvc;
using System.Web.UI;

namespace YourNamespace
{
    public partial class _Default : Page
    {
        public void Page_Load(object sender, System.EventArgs e)
        {
            // Change the current path so that the Routing handler can correctly interpret
            // the request, then restore the original path so that the OutputCache module
            // can correctly process the response (if caching is enabled).

            string originalPath = Request.Path;
            HttpContext.Current.RewritePath(Request.ApplicationPath, false);
            IHttpHandler httpHandler = new MvcHttpHandler();
            httpHandler.ProcessRequest(HttpContext.Current);
            HttpContext.Current.RewritePath(originalPath, false);
        }
    }
}


7 commentaires

Saint ... tu es un génie littéral. J'avais déjà essayé les premières étapes que vous avez suggérées, regrandig. Votre deuxième suggestion était la magie. Je ne peux pas vous exprimer à quel point je suis soulagé à ce moment-là. Maintenant, je vais vraiment creuser et comprendre ce que le problème était et comment votre solution a aidé. Merci encore!


Ahhhh ... dang ça. J'étais vraiment excité parce que la page d'accueil chargée, qui n'avait jamais travaillé auparavant. Mais, bien que la page d'accueil ait chargé avec succès, chaque lien que je clique est en train de m'emmener à une page d'erreur 404. Vous avez des pensées sur ce qui pourrait causer cela?


Vérifiez le commentaire de Rup, c'est la cartographie de l'application Wildcard qui n'est pas réglée correctement.


Merci, zippyv. Je verrai si je peux obtenir cette information de mon hôte Web, qui a été ... Moins que utile jusqu'à présent, malheureusement.


J'ai parlé avec mon hébergeur Web à ce sujet et ils ont dit que la cartographie générique ne supporte pas la cartographie générique. J'ai posté des détails de leur réponse dans une réponse, ci-dessous ... Devrait-il s'agir de ce disque dur de publier un projet MVC? Devrais-je juste rechercher un nouvel hôte Web? Cela ferait-il une différence?


J'ai fini par résoudre cela en quittant simplement mon hôte du serveur Web et en en avoir un nouveau. Ainsi, à la fin, je ne sais pas vraiment quelle était la réponse à ce problème, mais je vais marquer cette réponse comme l'accepter l'une parce qu'elle m'a rapproché la plus proche de la solution et m'a envoyé dans la bonne direction.


@CampBelt content d'entendre que votre nouvel hôte est meilleur. Juste curieux, quel hôte avez-vous utilisé auparavant? Je ne veux jamais acheter d'hébergement d'eux! :)



0
votes

Essayez PRE -Commiler votre demande . Dans Visual Studio, configurez un projet de déploiement, puis déployez-le en mode de sortie.

Parce que c'est pré-compilé, vous ne compilez pas sur IIS pour compiler le projet pour que vous puissiez l'exécuter. C'est ce que je fais toujours ces jours-ci car IIS sur le serveur de production peut être une douleur si j'ai besoin de le forcer à recompiler ou à mettre à jour.


0 commentaires

0
votes

Sur la base des commentaires et des réponses ci-dessus, j'ai fini par explorer la cartographie de l'application Wildcard en demandant à mon hôte Web si elles le soutiennent. Voici ce que j'ai reçu en réponse:


Cartographie générique n'est pas pris en charge par nos services. Strong> p>

Si vous souhaitez utiliser la ré-écriture URL, ce qui est La même chose que la redressement, veuillez utiliser l'exemple ci-dessous. p>

exemple d'utilisation de la carte de réécriture URL où l'URL suivante P>

/default.aspx?id=1 sera remplacée par /metfault.aspx ? id = 25 p> xxx pré>

  1. Si ce que vous essayez de faire n'est pas de ré-écriture de l'URL, mais c'est une redirection de l'URL, veuillez utiliser l'exemple ci-dessous. LI> OL>

    Pour rediriger votre site Web à l'aide de ASP Créer un fichier "par défaut". p>

    Placez le code suivant à l'intérieur: P>

    <HTML><HEAD>
    <META HTTP-EQUIV=Pragma Content="No-Cache">
    <META HTTP-EQUIV=Refresh Content="5;URL=http://YOURURLWHEREYOUWANTTOREDIRECT">
    </HEAD>
    


4 commentaires

Vous avez déjà confirmé que la navigation sur la racine de votre site fonctionne (car elle exécute default.aspx). En tant que solution rapide, vous pouvez modifier votre routage de "{contrôleur} / {action} / id" à "par défaut.aspx / {contrôleur} / {action} / id". Cela devrait le réparer.


@ La pointe de Zippyv devrait probablement fonctionner. Mais vous avez raison, cela ne devrait pas être difficile de publier un site MVC. Personnellement, j'utilise Godaddy - Publishing est simplement construit -> Publier (tant que vous avez copié les DLL MVC localement) et FTP.


Maxim Z., merci pour votre commentaire. Vous devez faire plus que construire -> publier? Vous devez aussi ftp certains fichiers? Vous n'avez pas fait cela, cela pourrait-il être mon problème? Quoi qu'il en soit, je pense que je vais aller de l'avant et voir si je peux avoir un mois d'hébergement de GoDaddy et voir si vous avez plus de succès là-bas.


Zippyv, merci pour votre suggestion. J'ai essayé cela et cela m'a permis d'accéder à certaines de mes pages, mais pas à tous. Je n'ai pas suffisamment creusé pour déterminer lesquels certains et non les autres. Cependant, ceux qui ont fait la charge semblaient le faire sans aucun des stylings CSS appliqués. Je ne me souviens pas exactement, mais je pense que j'ai lu quelque part qui peut se produire lorsque le routage tente d'accéder à des fichiers statiques ou de quelque chose ...



0
votes

La demande suivante est envoyée: http://stackoverflow.com?variableValue=87

Rediriger la page en utilisant des valeurs variables dans une chaîne de requête : -

Dim variableValue

variableValue = demande.Quiserysching ("Occassion")

si variableValue = 87 alors

réponse.status = "301 déplacé de manière permanente"

réponse.Ajouter "emplacement", " http://www.google.com "

fin si


0 commentaires