Gặp lỗi 404 sau khi nâng cấp lên ASP.NET 4.5


10

Gần đây tôi đã nâng cấp ứng dụng web của mình lên .NET 4.5. Sau khi đẩy mã vào môi trường thử nghiệm của chúng tôi, tôi nhận được "404 - Không tìm thấy tệp hoặc thư mục." lỗi. Mã chạy tốt từ máy tính để bàn VS2013 của tôi. Máy chủ web đang chạy IIS 7.5 trên W2K08 R2. Tôi có thể xem trang .asp hoặc .htm trên trang web, nhưng gặp lỗi này khi cố gắng xem các trang .aspx đơn giản nhất. Tôi nghi ngờ đây là sự cố cấu hình với web.config của tôi.


Bạn có thể chỉ cho chúng tôi web.config và phần applicationationhost.config liên quan đến trang web của bạn không?
Anthony Fornito

Đã thử đăng web.config, nhưng nó quá dài. Những gì cụ thể bạn muốn xem và tôi sẽ sao chép phần đó.
jbonwell

Để giúp tìm ra những gì sai, chúng tôi sẽ cần phải xem các cấu hình, chủ yếu là phần cụ thể của trang web. Thông thường toàn bộ web.config là hữu ích. Trong applicationationhost.config cho vấn đề của bạn, bộ chứa <site> sẽ ổn.
Anthony Fornito

Để lâu? bạn sẽ phải đăng nó ở đây, sử dụng notepad ++ để tìm và thay thế \ n bằng 4 khoảng trắng ở đầu mỗi dòng stackoverflow.com/questions/11003761/notepad-add-to-every-line
Anthony Fornito

<tên trang web = "VẬN CHUYỂN" id = "10067" serverAutoStart = "true"> <application path = "/ CPORT" applicationPool = "ASP.NET v4.0 Classic"> <virtualDirectory path = "/" PhysPath = "E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT "/> </ application> <bindings> <bind Protocol =" http "bindIn information =" 136.171.92.24:80:stage.chx.com "/> </ bindings> <logFile logExtFileFl = "ngày, Thời gian, ClientIP, UserName, SiteName, ComputerName, ServerIP, Method, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent" directory = "E: \ Inetpub \ SHIPPING \ Logs" /> </ trang web>
jbonwell

Câu trả lời:


11

Đây là 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>

hãy xem nhật ký truy cập của iis và cho chúng tôi thấy mục chính xác đang ném cho bạn 404. Điều đó sẽ giúp ích. vì tất cả chúng ta đều biết "Main.aspx" thậm chí không có trong E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT Bạn có đi đến trang web của bạn / CPORT không?
Jeff W.

Đây là mục. 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, - Nếu tôi thay đổi trang để test.htm, nó đi lên.
jbonwell

test.aspx có thực sự tồn tại trên hệ thống tập tin trong E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT không?
Jeff W.

Vâng, nó tồn tại.
jbonwell

Bạn đã chạy lệnh aspnet_regiis như đề xuất ở trên?
Jeff W.

10

Nhìn vào cấu hình bạn cung cấp nếu tất cả các tệp là nơi mà chúng được cho là sẽ làm như sau.

Đối với máy chủ windows 2008/2008 R2

Trước tiên, đảm bảo rằng .NET Framework 4.5.1 đã được cài đặt

Chạy lệnh sau từ dấu nhắc lệnh nâng cao:

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

Sau đó mở dịch vụ thông tin Internet

Chọn Máy chủ trong treeview bên trái.

Trong phần "IIS", mở "Hạn chế ISAPI và CGI".

Đối với tất cả các mục bắt đầu bằng "ASP.NET v4.0", nhấp chuột phải vào mục đó và chọn "Cho phép".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.