Obtenir une erreur 404 après la mise à niveau vers ASP.NET 4.5

10

J'ai récemment mis à niveau mon application Web vers .NET 4.5. Après avoir poussé le code dans notre environnement de test, j'obtiens un "404 - Fichier ou répertoire introuvable." Erreur. Le code fonctionne correctement depuis mon bureau VS2013. Le serveur Web exécute IIS 7.5 sur W2K08 R2. Je peux afficher la page .asp ou .htm sur le site, mais j'obtiens cette erreur lorsque j'essaie d'afficher la plus simple des pages .aspx. Je soupçonne que c'est un problème de configuration avec mon web.config.

jbonwell
la source
Pouvez-vous nous montrer votre web.config et la partie applicationhost.config qui se rapporte à votre site Web?
Anthony Fornito
J'ai essayé de publier le web.config, mais c'est trop long. Qu'est-ce que vous aimeriez voir et je vais copier cette section.
jbonwell
Afin d'aider à découvrir ce qui ne va pas, nous aurions besoin de voir les configurations, principalement la partie spécifique au site. Habituellement, l'intégralité de web.config est utile. Dans le fichier applicationhost.config correspondant à votre problème, le conteneur <site> devrait convenir.
Anthony Fornito du
Trop long? vous devrez le poster ici, utilisez notepad ++ pour trouver et remplacer \ n par 4 espaces au début de chaque ligne stackoverflow.com/questions/11003761/notepad-add-to-every-line
Anthony Fornito
<site name = "SHIPPING" id = "10067" serverAutoStart = "true"> <application path = "/ CPORT" applicationPool = "ASP.NET v4.0 Classic"> <virtualDirectory path = "/" physicalPath = "E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT "/> </application> <bindings> <binding protocol =" http "bindingInformation =" 136.171.92.24:80:stage.chx.com "/> </bindings> <logFile logExtFileFlags = "Date, Time, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent" directory = "E: \ Inetpub \ SHIPPING \ Logs" /> </site>
jbonwell

Réponses:

11

Voici le web.config. http://go.microsoft.com/fwlink/?LinkId=235367.

The following attributes can be set on the <httpRuntime> tag.
  <system.Web>
    <httpRuntime targetFramework="4.5.2" />
  </system.Web>
  -->
  <system.web>
    <httpRuntime requestValidationMode="4.0" enableHeaderChecking="false" encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    <httpCookies httpOnlyCookies="true"/>
    <compilation debug="true" strict="false" explicit="true">
      <assemblies>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
      </assemblies>
</compilation>
<trace enabled="false" pageOutput="false"/>
<pages theme="Apps" enableEventValidation="true" validateRequest="true" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
  <namespaces>
    <clear/>
    <add namespace="System"/>
    <add namespace="System.Collections"/>
    <add namespace="System.Collections.Generic"/>
    <add namespace="System.Collections.Specialized"/>
    <add namespace="System.Configuration"/>
    <add namespace="System.Text"/>
    <add namespace="System.Text.RegularExpressions"/>
    <add namespace="System.Linq"/>
    <add namespace="System.Web"/>
    <add namespace="System.Web.Caching"/>
    <add namespace="System.Web.SessionState"/>
    <add namespace="System.Web.Security"/>
    <add namespace="System.Web.Profile"/>
    <add namespace="System.Web.UI"/>
    <add namespace="System.Web.UI.WebControls"/>
    <add namespace="System.Web.UI.WebControls.WebParts"/>
    <add namespace="System.Web.UI.HtmlControls"/>
  </namespaces>
  <controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <add tagPrefix="Ipls" assembly="cvx.Ipls.Web" namespace="cvx.Ipls.Web.UI.Controls"/>
    <add tagPrefix="telerik" namespace="Telerik.Web.UI" assembly="Telerik.Web.UI"/>
    <add tagPrefix="ccc" namespace="CSC.Web.Common.Controls" assembly="CSC.Web.Common.Controls35"/>
  </controls>
</pages>
<sessionState mode="InProc" timeout="60"/>
<httpHandlers>
  <add path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI" validate="false"/>
  <add path="*_AppService.axd" verb="*" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add path="ScriptResource.axd" verb="GET,HEAD"  type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> 
</httpHandlers>
<httpModules>
  <add name="ErrorModule" type="CSC.Web.Common.Errors.ErrorModule"/>
  <add name="securityModule" type="CSC.Web.Common.Security.securityModule"/>
  <add name="RadCompression" type="Telerik.Web.UI.RadCompression"/>
</httpModules>
<identity impersonate="false"/>
  </system.web>
     <!-- 
    The system.webServer section is required for running ASP.NET AJAX under Internet
    Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
   <modules>
  <add name="ErrorModule" type="CSC.Web.Common.Errors.ErrorModule"/>
  <add name="securityModule" type="CSC.Web.Common.Security.securityModule"/>
  <add name="RadCompression" type="Telerik.Web.UI.RadCompression"/>
</modules>
<handlers>
  <add name="Telerik.Web.UI.WebResource.axd_*" path="Telerik.Web.UI.WebResource.axd" verb="*" type="Telerik.Web.UI.WebResource, Telerik.Web.UI" preCondition="integratedMode"/>
  <add name="ScriptResource.axd_GET,HEAD" path="ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode"/>
  <add name="*_AppService.axd_*" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode"/>
  <add name="*.asmx_*" path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode"/>
</handlers>
<httpErrors errorMode="DetailedLocalOnly"/>
<defaultDocument>
  <files>
    <add value="Main.aspx"/>
  </files>
</defaultDocument>
 </system.webServer>
 <runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <!--<dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
  </dependentAssembly>-->
 </assemblyBinding>
</runtime>
<location path="Telerik.Web.UI.WebResource.axd">
  <system.web>
    <authorization>
        <allow users="*"/>
    </authorization>
  </system.web>
</location>
<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_ITwoWayAsync">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://servername.com/InformationService/MasterDataService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITwoWayAsync" contract="MasterData.MasterDataService" name="BasicHttpBinding_ITwoWayAsync"/>
</client>
</system.serviceModel>
</configuration>
jbonwell
la source
regardez dans le journal d'accès iis et montrez-nous l'entrée exacte qui vous lance un 404. Cela vous aidera. pour tout ce que nous savons, "Main.aspx" n'est même pas dans E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT Allez-vous sur votre site / CPORT ?
Jeff W.
Voici l'entrée. 146.27.228.73, CT \ jbpj, 12/2/2016, 13:39:12, W3SVC10067, HOU150W8AHV1590, 136.171.92.24, 280, 779, 1498, 404, 1260, GET, /cport/test.aspx, - If I changez la page en test.htm, elle apparaît.
jbonwell
test.aspx existe-t-il réellement sur le système de fichiers dans E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT?
Jeff W.
Oui, ça existe.
jbonwell
Avez-vous exécuté la commande aspnet_regiis comme suggéré ci-dessus?
Jeff W.
10

Regardez la configuration que vous avez fournie si tous les fichiers sont là où ils sont censés être, procédez comme suit.

Pour Windows Server 2008/2008 R2

Assurez-vous d'abord que .NET Framework 4.5.1 est installé

Exécutez la commande suivante à partir d'une invite de commandes élevée:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

Ouvrez ensuite Internet Information Services

Sélectionnez le serveur dans l'arborescence de gauche.

Dans la section "IIS", ouvrez "Restrictions ISAPI et CGI".

Pour tous les éléments commençant par "ASP.NET v4.0", cliquez avec le bouton droit sur l'élément et sélectionnez "Autoriser".

Anthony Fornito
la source