Nach dem Upgrade auf ASP.NET 4.5 wird ein 404-Fehler angezeigt

10

Ich habe kürzlich meine Web-App auf .NET 4.5 aktualisiert. Nachdem ich den Code in unsere Testumgebung verschoben habe, erhalte ich die Meldung "404 - Datei oder Verzeichnis nicht gefunden". Error. Der Code läuft gut von meinem VS2013-Desktop. Auf dem Webserver wird IIS 7.5 unter W2K08 R2 ausgeführt. Ich kann die ASP- oder HTM-Seite auf der Site anzeigen, erhalte jedoch diesen Fehler, wenn ich versuche, die einfachste ASPX-Seite anzuzeigen. Ich vermute, es ist ein Konfigurationsproblem mit meiner web.config.

jbonwell
quelle
Können Sie uns Ihre web.config und den Teil applicationhost.config zeigen, der sich auf Ihre Website bezieht?
Anthony Fornito
Versucht, die web.config zu veröffentlichen, aber es ist zu lang. Was möchten Sie konkret sehen und ich werde diesen Abschnitt kopieren.
Jbonwell
Um herauszufinden, was falsch ist, müssten wir die Konfigurationen sehen, hauptsächlich den ortsspezifischen Teil. Normalerweise ist die gesamte web.config hilfreich. In der applicationhost.config für Ihr Problem sollte der <site> -Container in Ordnung sein.
Anthony Fornito
Zu lang? Sie müssen es hier posten. Verwenden Sie Notepad ++, um \ n zu Beginn
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 = "Datum, Uhrzeit, ClientIP, Benutzername, SiteName, Computername, ServerIP, Methode, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent" directory = "E: \ Inetpub \ SHIPPING \ Logs" /> </ site>
jbonwell

Antworten:

11

Hier ist die 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
quelle
Schauen Sie in das iis-Zugriffsprotokoll und zeigen Sie uns den genauen Eintrag, der Ihnen einen 404 wirft. Das wird helfen. Nach allem, was wir wissen, befindet sich "Main.aspx" nicht einmal in E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT. Gehen Sie zu Ihrer Site / CPORT ?
Jeff W.
Hier ist der Eintrag. 146.27.228.73, CT \ jbpj, 02.12.2016, 13:39:12, W3SVC10067, HOU150W8AHV1590, 136.171.92.24, 280, 779, 1498, 404, 1260, GET, /cport/test.aspx, - If I. Ändern Sie die Seite in test.htm, es wird angezeigt.
Jbonwell
Existiert test.aspx tatsächlich im Dateisystem in E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT?
Jeff W.
Ja, es existiert.
Jbonwell
Haben Sie den Befehl aspnet_regiis wie oben vorgeschlagen ausgeführt?
Jeff W.
10

Sehen Sie sich die von Ihnen bereitgestellte Konfiguration an, wenn sich alle Dateien dort befinden, wo sie sich vermutlich befinden.

Für Windows Server 2008/2008 R2

Stellen Sie zunächst sicher, dass .NET Framework 4.5.1 installiert ist

Führen Sie den folgenden Befehl an einer Eingabeaufforderung mit erhöhten Rechten aus:

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

Öffnen Sie dann Internetinformationsdienste

Wählen Sie den Server in der linken Baumansicht aus.

Öffnen Sie im Abschnitt "IIS" "ISAPI- und CGI-Einschränkungen".

Klicken Sie für alle Elemente, die mit "ASP.NET v4.0" beginnen, mit der rechten Maustaste auf das Element und wählen Sie "Zulassen".

Anthony Fornito
quelle