รับข้อผิดพลาด 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.