我们已将使用经典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页面问题。谢谢。
答案 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)
问题可能出在浏览器端:请确保关闭“显示友好消息”的IE设置为
此外,在服务器端,您必须有一些设置允许将错误消息发送到客户端(抱歉,我只能访问该设置的IIS风格...不确定Azure中的内容) :
答案 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>
毋庸置疑,这可能会带来安全隐患,因此不应启用它!