2012-12-11 3 views
0

EDITasp.net mvc 3 7.5 erreur 404 iis

bien fonctionne très bien sur ma machine dev si j'utilise le serveur Visual développement. Toutefois, si je configure l'option Utiliser le serveur Web local IIS (URL du projet définie à http://localhost/myapp), cela ne fonctionne PAS. J'ai une erreur 401. Déploie très bien depuis Visual Studio 2010 en utilisant msdeploy vers IIS 7.5 avec un site nommé apps.mydomain.com/myapp. Donc, essentiellement, je veux parcourir à http://apps.mydomain.com/myapp mais quand je fais, je reçois erreur 404.

  • J'ai l'authentification Windows activée uniquement sur le site tout le reste est désactivé.
  • J'ai installé le correctif http://support.microsoft.com/kb/980368.
  • Pool d'applications .NET 4 pipeline intégré. J'ai essayé aussi le pipeline classique mais ça ne marche pas.
  • exécuté% windir% \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir ne fonctionne toujours pas

Qu'est-ce que je fais mal ou dois-je faire autre chose?

Global.asax

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new AuthorizeAttribute()); 
     filters.Add(new HandleErrorAttribute()); 
    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}");    
     routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });  

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 
    } 

    protected void Application_Start()   
    { 
     AreaRegistration.RegisterAllAreas(); 

     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
    }  
} 

Web.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    <sectionGroup name="elmah"> 
     <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" /> 
     <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> 
     <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> 
     <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" /> 
    </sectionGroup> 
    </configSections> 
    <appSettings> 
    <add key="webpages:Version" value="1.0.0.0" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    <add key="elmah.mvc.disableHandler" value="false" /> 
    <add key="elmah.mvc.disableHandleErrorFilter" value="false" /> 
    <add key="elmah.mvc.requiresAuthentication" value="false" /> 
    <add key="elmah.mvc.allowedRoles" value="*" /> 
    <add key="elmah.mvc.route" value="elmah" /> 
    <add key="autoFormsAuthentication" value="false" /> 
    <add key="enableSimpleMembership" value="false" /> 
    </appSettings> 
    <system.web> 
    <customErrors mode="On" defaultRedirect="~/error"> 
     <error statusCode="404" redirect="~/error/notfound"></error> 
    </customErrors> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
     </assemblies> 
    </compilation> 

    <authentication mode="Windows" /> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages" /> 
     </namespaces> 
    </pages> 
    <httpModules> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" /> 
    </httpModules> 
    </system.web> 
    <system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Replace"> 
     <remove statusCode="404" /> 
     <error statusCode="404" responseMode="ExecuteURL" path="~/error/notfound" /> 
     <remove statusCode="500" /> 
     <error statusCode="500" responseMode="ExecuteURL" path="~/error" /> 
    </httpErrors> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" /> 
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" /> 
    </modules> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    </entityFramework> 
    <connectionStrings> 

    </connectionStrings> 
    <elmah> 
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Elmah.Sql" /> 
    <security allowRemoteAccess="true" /> 
    </elmah> 
    <location path="elmah.axd" inheritInChildApplications="false"> 
    <system.web> 
     <httpHandlers> 
     <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> 
     </httpHandlers> 

     <authorization> 
     <allow roles="admin" /> 
     <deny users="*" /> 
     </authorization> 
     --> 
    </system.web> 
    <system.webServer> 
     <handlers> 
     <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" /> 
     </handlers> 
    </system.webServer> 
    </location> 
</configuration> 
+0

Si possible, vous devez vous connecter à distance au serveur en question et demander la page localement. Si rien d'autre, vous devriez obtenir une erreur plus utile que juste 404. –

+0

Vous pouvez également vérifier si le pool d'applications est en cours d'exécution classique ou intégré (doit être intégré) – heads5150

+1

Déposer un fichier HTML à la racine du site - pouvez-vous voir que dans le navigateur? Sinon, cela pourrait être un problème de résolution DNS. Le domaine se résout-il définitivement à l'adresse IP du serveur? – levelnis

Répondre

0

On dirait que vous avez un problème avec les fixations.

Vous pouvez également vérifier apps.mydomain.com dans le DNS.

P.S. Si vous n'êtes pas sûr de vos itinéraires, vous pouvez utiliser cette petite bibliothèque sympa: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

+0

"@nZeus" Je pense que vous avez raison sur le problème avec les fixations. Créé une nouvelle entrée dns myapp.mydomain.com (l'emplacement d'origine était apps.mydomain.com/myapp qui n'a pas fonctionné) et mon application mvc arrive à cette url. Une raison pour laquelle c'est? – dm80

+0

Que se passe-t-il lorsque vous entrez http://apps.mydomain.com? Vous devriez soit voir la page "IIS Welcome" ou le contenu du site Web. Si vous voyez 404, exécutez "ping apps.mydomain.com" et "tracert apps.mydomain.com" dans la ligne de commande. – nZeus

Questions connexes