2

SiteEditのプロキシWebサイトに最初にアクセスすると、すべてが正しく読み込まれ、SiteEditを有効にして正常に対話できます。ただし、ページ上のリンクのいずれかをクリックするか、単純なF5更新を実行するか、プロキシサイトの別のURLを直接入力すると、エラーが発生します。エラーページには、SiteEditモードを有効にするための[SiteEdit]ボタンが表示されますが、その背後(基本的にプロキシページを表示するフレーム)に、単純な「プロキシでエラーが発生しました」というメッセージが表示されます。

コンテンツマネージャサーバーで、アプリケーションイベントログを調べて、SiteEditが報告しているエラーが「着信要求からの読み取りエラーです。オブジェクト参照がオブジェクトのインスタンスに設定されていません」であることがわかります。

ブラウザを閉じてから、移動しようとしたページをロードすると、すべて正常に機能します。ただし、更新するか、他のページ(リンクまたは直接)に移動しようとすると、もう一度エラーが発生します。ブラウザを閉じて繰り返します...

誰かがこれに光を当てることができますか?現在、SiteEdit 2009 SP2からSP3へのアップグレードに取り組んでいます。これは、本番環境(SP2)とサンドボックス環境(SP3)に存在する問題です。当然のことながら、私たちのコンテンツエディタはSiteEditを使用していません(ほとんどこれが原因です)。SP3のアップグレードによって、その中心にあるものがすべて解決されたのではないかと期待していました(ただし、明らかに解決されていません)。

IE9は最初のレンダリングで機能するため、IE9が適切に構成されている(イントラネットゾーンにサイトがある、適切なスクリプトアクセス許可が設定されている、ポップアップが許可されているなど)と想定していますが、同じブラウザーセッションでの試行別のページに移動すると失敗します。

あなたが与えることができるどんな洞察にも感謝します。

4

1 に答える 1

0

サポートに連絡してから数週間が経ちましたが、構成と設定を何度か行ったり来たりして、最終的にオブジェクト参照エラーのスタックトレースを要求されました。

これにより、同僚の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} &lt;{win32ThreadId}&gt; {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}&#xA;&#xA;Component: {keyvalue(component)}&#xA;Errorcode: {keyvalue(errorcode)}&#xA;User: {keyvalue(username)}&#xA;&#xA;{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 &amp; 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プロキシは正しく機能しています。

于 2013-01-03T00:21:27.693 に答える