Azure上的经典ASP网站“由于发生内部服务器错误,无法显示该页面。”

时间:2013-03-20 18:43:02

标签: azure asp-classic web cloud

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

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

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

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

日志消息仍然没有提供任何错误的详细信息,只是提供以下信息:

详细错误信息:

模块IsapiModule
通知ExecuteRequestHandler
Handler ASPClassic
错误代码0x00000000

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

6 个答案:

答案 0 :(得分:11)

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

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

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

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

<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>

答案 1 :(得分:7)

尝试一件(奇怪的),对我有用:

尝试在您的Azure网站上进行FTP,并将web.config重命名为完全不同的内容。

我将我的名称重命名为web.config2 - Azure "The page cannot be displayed because an internal server error has occurred."错误消息消失了,我的ASP.Net应用程序再次爆发。

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

是的,我知道......这是一个愚蠢的建议,但Azure没有给出任何关于导致错误的原因的提示,即使开启了日志记录,这也保存了我的理智!

答案 2 :(得分:1)

  1. 问题可能出在浏览器端:请确保关闭“显示友好消息”的IE设置为enter image description here

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

答案 3 :(得分:0)

我通过启用Logging =&gt;下的应用程序日志解决了这个问题。诊断记录Azure Web应用程序配置。

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

在我的情况下,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"/>

我删除了它们,然后又恢复了工作。

答案 4 :(得分:0)

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

<system.webServer>

您可以放置​​

<asp>

元素,它根据Classic的运作方式配置各种事物。

影响我网站的属性是

**appAllowDebugging="true"**

虽然当您使用Visual Studio进行开发并且安装了即时调试器时,此属性很好并且花花公子,但它会混淆Classic Asp的错误处理。

顺便说一句,我永远地想弄清楚我改变了什么。

答案 5 :(得分:0)

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

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

毋庸置疑,这可能会带来安全隐患,因此不应启用它!