【问题标题】:Classic ASP Website on Azure "The page cannot be displayed because an internal server error has occurred."Azure 上的经典 ASP 网站“由于发生内部服务器错误,无法显示页面。”
【发布时间】:2025-11-23 23:25:01
【问题描述】:

我们已将一个用经典 asp 编写的应用程序迁移到 Azure 网站(共享),某些页面只是给出错误“页面无法显示,因为发生了内部服务器错误。”没有任何细节。这些页面在 IIS 7 或使用 IIS express 下工作正常。但是在 Azure 网站上却没有。

按照其他一些帖子中的建议,我在 Azure 上为网站配置了以下内容:

1) Web 服务器日志记录 - 开启
2) 详细错误信息 - ON
3) Web.config - customErrors 模式关闭。

<customErrors mode="Off"/>
 <compilation debug="true" targetFramework="4.0">

日志消息仍然没有提供更多细节什么是错误的,只是提供以下信息:

详细错误信息:

模块 IsapiModule
通知 ExecuteRequestHandler
处理程序 ASPClassic
错误代码 0x00000000

感谢任何帮助如何调试 Azure 网站上的经典 asp 页面问题。谢谢。

【问题讨论】:

  • 您可以设置 Windows Azure 诊断程序或使用远程桌面并根据上一篇 SO 文章中引用的解决方案导航到内部 ip:*.com/questions/6324463/…
  • 为我解决问题this answer希望能帮到你

标签: azure asp-classic web cloud


【解决方案1】:

谢谢 G. Stoynev!添加自定义错误asp页面后它起作用了!我使用以下链接中的代码创建自定义错误 asp 页面

http://support.microsoft.com/kb/224070

以下链接也帮助了 http://www.tacticaltechnique.com/web-development/classic-asp-getlasterror-in-iis7/

现在 system.webServer我的 web.config 中的部分如下所示:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
    <httpErrors> 
     <remove statusCode="500" subStatusCode="100" />
     <error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/errors.asp" responseMode="ExecuteURL" /> 
   </httpErrors> 
  </system.webServer>

【讨论】:

    【解决方案2】:

    尝试一个(奇怪的)事情,这对我有用:

    尝试通过 FTP 连接到您的 Azure 网站,并将您的 web.config 重命名为完全不同的名称。

    我将我的重命名为web.config2 - Azure 的"The page cannot be displayed because an internal server error has occurred." 错误消息消失了,我的 ASP.Net 应用程序又恢复了活力。

    从那里,我从头开始重新创建 web.config,从我的原始版本中逐块复制它的块(看看是什么导致了问题)

    是的,我知道...这是一个愚蠢的建议,但即使打开了日志记录,Azure 也没有提示我是什么导致了错误,这让我保持理智!!

    【讨论】:

    • 嗯,谢谢你的建议。我让它工作,后来诊断出问题出在同一个文件上:) +1 谢谢。
    • 我会支持这个——我今天遇到了类似的问题,结果发现是某事或某人修改了 web.config,添加了导致所有静态内容的无效 MIME 类型扩展名请求失败。修复起来很简单,但都源于站点的错误 web.config 文件。
    【解决方案3】:

    如果您尝试配置无法访问 IIS 的站点(例如 Azure Web 应用),则可以在 Web.Config 中配置经典 ASP 设置。

    <system.webServer>
    

    你可以放置一个

    <asp>
    

    元素,它通过 Classic 的操作方式配置各种事物。

    影响我网站的属性是

    **appAllowDebugging="true"**
    

    当您使用 Visual Studio 进行开发并安装了 Just-In-Time 调试器时,虽然此属性很好用,但它会扰乱 Classic Asp 的错误处理。

    顺便说一句,我花了很长时间才弄清楚我改变了什么。

    【讨论】:

      【解决方案4】:

      要将详细的错误消息发送到浏览器,您需要启用 scriptErrorSentToBrowser 属性,如下所示。

        <system.webServer>
             <asp scriptErrorSentToBrowser="true" />
        </system.webServer>
      

      不用说,这可能存在潜在的安全风险,因此不应启用!

      【讨论】:

        【解决方案5】:
        1. 您的问题可能出在浏览器端:确保关闭“显示友好消息”的 IE 设置

        2. 此外,在服务器端,您必须进行一些设置以允许将错误消息发送到客户端(抱歉,我只能访问该设置的 IIS 风格...不确定 Azure 中有什么) :

        【讨论】:

        • 网站位于“Azure 网站”上,并且没有显示“向浏览器发送错误”选项。同样对于“Azure 网站”,似乎没有远程桌面到服务器。所以我不知道如何设置发送错误到浏览器。我在 web.config system.webserver 部分尝试了以下没有运气&lt;asp scriptErrorSentToBrowser="true"/&gt;
        • 试试这个:将 web.config 添加到 &lt;system.webServer&gt; 部分 &lt;httpErrors existingResponse="PassThrough" /&gt;。我也会尝试自定义 500.100 页面 - 他们必须被允许!
        【解决方案6】:

        我通过在 Azure Web 应用配置中的 Logging => Diagnostics log 下打开 Application log 解决了这个问题。

        然后您可以在“日志流”窗格中看到错误并修复它。

        在我的情况下,web.config 中以下两行的错误:

        <add name="ExtensionlessUrlHandler-Integrated-4.0" 
         path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" 
         preCondition="integratedMode,runtimeVersionv4.0"/>
        <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
        

        我删除了它们,它又可以工作了。

        【讨论】: