クラシックASPで記述されたアプリケーションをAzure Webサイト(共有)に移行しました。一部のページで、「内部サーバーエラーが発生したため、ページを表示できません。」というエラーが表示されるだけです。詳細はありません。これらのページはIIS 7の下で正常に機能するか、IIS express。
他のいくつかの投稿で示唆されているように、AzureのWebサイトに対して次のように構成しました。
1)Webサーバーのロギング-オン
2)詳細なエラーメッセージ-オン
3)Web.config-customErrorsモードをオフにします。
<customErrors mode="Off"/>
<compilation debug="true" targetFramework="4.0">
それでも、ログメッセージは何が問題であるかについての詳細を提供せず、単に次の情報を提供します。
詳細なエラー情報:
モジュールIsapiModule
通知ExecuteRequestHandler
ハンドラASPClassic
エラーコード0x00000000
Azure Webサイトの従来のASPページの問題をデバッグする方法を教えてください。ありがとうございました。
問題はブラウザ側にある可能性があります:IE「フレンドリーなメッセージを表示する」設定がオフになっていることを確認してください
また、サーバー側では、エラーメッセージをクライアントに送信できるようにするための設定が必要です(申し訳ありませんが、IIS設定のフレーバーのみにアクセスできます... Azureで):
G.ストイネフありがとう!カスタムエラーaspページを追加した後に動作しました!次のリンクのコードを使用してカスタムエラーASPページを作成しました
http://support.Microsoft.com/kb/22407
また、次のリンクも役に立ちました 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つは、私にとってはうまくいきました:
Azure WebサイトにFTPで接続して、web.config
の名前をまったく別の名前に変更します。
私の名前をweb.config2
に変更しました-Azure "The page cannot be displayed because an internal server error has occurred."
エラーメッセージが表示されなくなり、ASP.Netアプリケーションが再び起動しました。
そこから、web.configを最初から再作成し、元のバージョンからそのチャンクを少しずつコピーしました(問題の原因を確認するため)。
ええ、私は知っています...それは馬鹿げた提案ですが、Azureは、ログをオンにしても、エラーの原因について何のヒントも与えてくれませんでした。
詳細なエラーメッセージをブラウザに送信するには、以下のようにscriptErrorSentToBrowser属性を有効にする必要があります。
<system.webServer>
<asp scriptErrorSentToBrowser="true" />
</system.webServer>
言うまでもありませんが、これは潜在的なセキュリティリスクになる可能性があるため、有効にしたままにしないでください。
Azure Webアプリ構成のLogging => Diagnosticsログでアプリケーションログをオンにすることで解決しました。
その後、[ログストリーム]ペインでエラーを確認して修正できます。
私の場合、次の2行が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"/>
私はそれらを削除し、それは再び働いた。
Azure Webアプリなど、IISにアクセスできないサイトを構成しようとしている場合は、Classic ASP設定をWeb.Configで構成できます。
下
<system.webServer>
あなたは置くことができます
<asp>
classicの動作方法でさまざまなものを構成する要素。
私のサイトに影響を与えていたプロパティは
**appAllowDebugging="true"**
このプロパティは、Visual Studioを使用して開発し、Just-In-Timeデバッガーをインストールしている場合は問題なくうまく動作しますが、Classic Aspのエラー処理を混乱させます。
ところで、私が何を変えたかを理解するのに私を永遠に連れて行きました。