サポートに連絡してから数週間が経ちましたが、構成と設定を何度か行ったり来たりして、最終的にオブジェクト参照エラーのスタックトレースを要求されました。
これにより、同僚の1人(最近Tridionのロギングを詳しく調べていた)と協力して、スタックトレースの出力を確認するためにロギング構成を微調整することになりました。残念ながら、サポートする問題を報告した後、作業中の環境をリセットし(Tridion 2011へのアップグレードにも取り組んでいるため)、このリクエストを行ったときに、SiteEditは構成されたとおりにアプリケーションイベントログに記録されませんでした。 (おそらく許可の問題だと思います)。
スタックトレースを取得するために、同僚は\ Tridion \ SiteEdit 2009\tridion.logging.configを変更してファイルにログを記録しました。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=349a39f202fa9b53" />
</configSections>
<loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="false">
<listeners>
<add name="Log File" fileName="C:\Tridion\log\SiteEdit.log" formatter="Tridion Text Formatter" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=349a39f202fa9b53" traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=349a39f202fa9b53" />
</listeners>
<formatters>
<add template="{timestamp} <{win32ThreadId}> {message}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=349a39f202fa9b53" name="Trace Text Formatter" />
<add template="{message}

Component: {keyvalue(component)}
Errorcode: {keyvalue(errorcode)}
User: {keyvalue(username)}

{keyvalue(stacktrace)}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=349a39f202fa9b53" name="Tridion Text Formatter" />
</formatters>
<categorySources>
<add switchValue="All" name="General" />
</categorySources>
<specialSources>
<allEvents switchValue="All" name="All Events">
<listeners>
<add name="Log File" />
</listeners>
</allEvents>
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings" />
</specialSources>
</loggingConfiguration>
</configuration>
ファイルに書き出すようにロギングを構成すると、例外のスタックトレースを確認できました。
着信要求からの読み取り中にエラーが発生しました。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
コンポーネント:SiteEdit.Proxyエラー
コード:0
ユーザー:NT AUTHORITY \ IUSR
StackTrace情報の詳細:
Tridion.Web.UI.SiteEdit.Proxy.Helper.CopyRequestCookies(HttpRequest request、CookieContainer cookieContainer)
atTridion.Web.UI.SiteEdit.Proxy。
Tridion.Web.UI.SiteEdit.Proxy.Request.RequestFactory.CreateRequest(HttpRequest request)
at Tridion.Web.UI.SiteEdit.Proxy.RedirectModule.context_BeginRequest(Object sender、EventArgs e)のRequest.RequestFactory.CreateRequest(HttpRequest request )
オブジェクト参照エラーは「CopyRequestCookies」というタイトルのメソッドにあったため、Cookieを確認することにしました(ブラウザーを閉じて再度開くとSiteEditが再び機能するようになりましたが、1つのリクエストに対してのみ意味がありました)。
案の定、ユーザーがCookieをオンにしていることを単に検証するために使用されていた奇妙なCookieがありました。javascriptコード(私の開発者はオンラインのどこかから入手したと思います)は次のとおりです。
document.cookie = 'CookieTest';
if (document.cookie == "") {
$("form").append('<div class="master-error"><p>Cookies are not enabled</p></div>');
}
Cookieに値がないことに注意してください(通常はJSになりますdocument.cookie = 'name=value';
)。プロキシサイトに送信されたCookieをステージングサイトに渡すプロキシロジックには、値のないCookieを予期しないコードが含まれていると考えています(Fiddlerでは、Cookieが単純に渡されることがわかります)。 「CookieTest;」として)が、シナリオを処理するために防御的にコーディングされていません。
コードを変更してCookieに値を適用することによりdocument.cookie = 'CookieTest=true'
、SiteEditプロキシは正しく機能しています。