รับข้อผิดพลาด 404 หลังจากอัปเกรดเป็น ASP.NET 4.5


10

ฉันเพิ่งอัพเกรดแอปเว็บเป็น. NET 4.5 หลังจากผลักรหัสไปยังสภาพแวดล้อมการทดสอบของเราฉันได้รับ "404 - ไม่พบไฟล์หรือไดเรกทอรี" ความผิดพลาด รหัสทำงานได้ดีจากเดสก์ท็อป VS2013 ของฉัน เว็บเซิร์ฟเวอร์กำลังเรียกใช้ IIS 7.5 บน W2K08 R2 ฉันสามารถดูหน้า. asp หรือ. htm บนเว็บไซต์ แต่ได้รับข้อผิดพลาดนี้เมื่อพยายามดูหน้า. aspx ที่ง่ายที่สุด ฉันสงสัยว่าเป็นปัญหาการกำหนดค่ากับ web.config ของฉัน


คุณสามารถแสดง web.config และส่วน applicationhost.config ให้กับเว็บไซต์ของคุณได้หรือไม่
— Anthony Fornito

พยายามโพสต์เว็บตั้งค่าไว้ แต่มันยาวเกินไป คุณต้องการเห็นอะไรเป็นพิเศษและฉันจะคัดลอกส่วนนั้น
— jbonwell

เพื่อช่วยในการค้นหาว่ามีอะไรผิดปกติเราจะต้องเห็นการกำหนดค่าส่วนใหญ่เป็นส่วนเฉพาะของไซต์ โดยปกติ web.config ทั้งหมดจะมีประโยชน์ ใน applicationhost.config สำหรับปัญหาของคุณคอนเทนเนอร์ <site> ควรจะใช้ได้
— Anthony Fornito

ไปอีกนาน? คุณจะต้องโพสต์ไว้ที่นี่ใช้ Notepad ++ เพื่อค้นหาและแทนที่ \ n 4 ช่องว่างที่จุดเริ่มต้นของสายแต่ละstackoverflow.com/questions/11003761/notepad-add-to-every-line
— แอนโธนี 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 = "วันที่, เวลา, ClientIP, ชื่อผู้ใช้, ชื่อไซต์, ชื่อคอมพิวเตอร์, ServerIP, วิธี, UriStem, UriQuery, HttpStatus, Win32Status, BytesSent" ไดเรกทอรี = "E: \ Inetpub \ SHIPPING \ Logs" /> </site>
— jbonwell

คำตอบ:


11

นี่คือ 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>

ดูในบันทึกการเข้าถึงของ iis และแสดงรายการที่ถูกต้องซึ่งให้เรา 404 นั่นจะช่วยได้ สำหรับสิ่งที่เรารู้ว่า "Main.aspx" ไม่ได้อยู่ใน E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT คุณจะไปที่ไซต์ของคุณหรือไม่?
— Jeff W.

นี่คือรายการ 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, - หากฉัน เปลี่ยนหน้าเป็น test.htm ขึ้นมา
— jbonwell

test.aspx มีอยู่จริงในระบบไฟล์ใน E: \ inetpub \ wwwroot \ WEB_APPS \ CPORT หรือไม่
— Jeff W.

ใช่มันมีอยู่จริง
— jbonwell

คุณเรียกใช้คำสั่ง aspnet_regiis ตามที่แนะนำข้างต้นหรือไม่
— Jeff W.

10

ดูการกำหนดค่าที่คุณให้ไว้หากไฟล์ทั้งหมดอยู่ในที่ที่ควรทำดังต่อไปนี้

สำหรับ windows Server 2008/2008 R2

ก่อนอื่นให้ตรวจสอบว่ามีการติดตั้ง. NET Framework 4.5.1

เรียกใช้คำสั่งต่อไปนี้จากพรอมต์คำสั่งที่ยกระดับ:

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

จากนั้นเปิดบริการข้อมูลทางอินเทอร์เน็ต

เลือกเซิร์ฟเวอร์ในมุมมองต้นไม้ด้านซ้าย

ในส่วน "IIS" ให้เปิด "ข้อ จำกัด ของ ISAPI และ CGI"

สำหรับรายการทั้งหมดที่เริ่มต้นด้วย "ASP.NET v4.0" ให้คลิกขวาที่รายการแล้วเลือก "อนุญาต"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.