2010-04-29 2 views
0

Je développe un site Web dans ASP.NET MVC en utilisant C#. Cela fonctionne très bien sur ma machine, mais quand je la charge sur le serveur de production, cela génère une erreur en essayant de présenter la page d'accueil.Site Web écrit en C# et ASP.NET MVC compile des pages ASCX avec Visual Basic

L'erreur est due au fait que le système ASP compile les pages .ascx à l'aide de Visual Basic, ce qui, bien sûr, ne fonctionne pas puisque tout le code est en C#.

Comment résoudre ce problème?

+1

Sur une note connexe, mais complètement inutile: [Works on My Machine Programme de certification] (http://www.codinghorror.com/blog/2007/03/the-works-on-my-machine-certification-program .html) :) –

Répondre

0

Votre application de production contient-elle les éléments suivants dans la configuration de l'application?

<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
    <providerOption name="CompilerVersion" value="v3.5"/> 
    <providerOption name="WarnAsError" value="false"/> 
</compiler> 

Aussi, avez-vous vérifié que votre page maître/Vues contiennent

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<YourType>" %> 

et

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<LoginPageView>" %> 

La spécification du langage?

0

J'ai trouvé que le langage du compilateur par défaut doit être spécifié dans le fichier web.config.

Pour une raison quelconque, cela n'est pas spécifié dans mon projet (qui a été créé par un modèle Visual Studio). Il semble que lors de l'exécution locale, le système ASP déduit correctement la langue par défaut, mais lors de l'exécution sur un serveur distant, il est par défaut Visual Basic.

Le paramètre de langue par défaut du compilateur est défini comme suit:

<compilation 
    defaultLanguage="c#" 
/> 

où la balise de compilation est dans la balise system.web qui est dans la balise de configuration. Notez qu'il y a un L majuscule dans defaultLanguages. Notez également que normalement cette balise sera déjà présente avec beaucoup d'autres informations, vous devez simplement ajouter l'attribut defaultLanguage.

+0

Voir ma réponse ci-dessus. –

0

J'ai eu ce problème hier, en effet ...

Dans vos fichiers .ascx, vous devez inclure la directive de contrôle avec l'attribut de langage approprié en haut de la page:

<%@ Control Language="C#" ... %> 
Questions connexes