4

そもそも、私の質問はオンラインで見つけたたくさんの答えに基づいており、誰かが明確な答えを出してくれることを望んでいます。

私の現在の調査結果から要約すると、非常に短い質問です。CoreServiceを使用すると、デフォルトで16,384バイトを超えるファイルをアップロードする場合の制限はWCFのようです。このコードを複数のSDLTridionインスタンスに対して使用することを意図しているため、サーバー構成を変更することなく、空のgifファイル以上のものをアップロードできる非常に基本的なものを見落としていることを願っています。


文脈と私が見つけたものを提供するためだけに、これをすべて読む必要はないかもしれませんが、私はさまざまなことを探して試すのにかなりの時間を費やしたので、次に出くわす人のためにそれを書き留めたほうがいいと思いましたこれ。

この例に基づいて、CoreServiceStreamUploadを使用してファイルをアップロードしています 。コアサービスを使用して外部ファイルをSDLTridion2011にインポートするにはどうすればよいですか?

そのすべてのコードをコピーしたくはありませんが、それを基にして、小さな(empty.gif)を一時的な場所に正常にアップロードでき、Windowsの一時ファイルのパスが返されます。

String tempFileLocationOnServer = streamUploadPort.uploadBinaryByteArray(
                                                                 fileName, data);

少し大きいファイル、80KのPDFの場合、例外が発生します。

操作'UploadBinaryByteArray'の要求メッセージの本文の逆シリアル化中にエラーが発生しました。XMLデータの読み取り中に、配列の最大長のクォータ(16384)を超えました。このクォータは、XMLリーダーの作成時に使用されるXmlDictionaryReaderQuotasオブジェクトのMaxArrayLengthプロパティを変更することで増やすことができます。行1、位置2461。

私はこのWCFreaderQuotas設定を見つけました-欠点?、これはWCFの問題であり、DDOSから保護するためであり、これらの値を調整できることを説明しているようです。

80Kバイトはそれほど多くないと思います。同じクレデンシャルを使用して、Webインターフェイスを介して実行できないことは何もしていません。

また、CoreServiceにはすでにユーザー名/パスワードが必要であるため、ペイロードの前に認証で要求を拒否する必要があるため、DDOSの問題が発生する理由がわかりません。

webdavやTridionインスタンスでのネットワークドライブのマッピング、または別のWebサーバーを使用してファイルをダンプするなどの代替手段を知っているので、マルチメディアコンポーネントを作成するときにそれらを「外部」として参照できますが、そのルートに進む必要はありません。 。

4

2 に答える 2

5

質問のタイトル (Java から) を読むと、Java パーサーが MTOM 100% を実装していないことに注意する必要があります。これは、Core Services がストリームのアップロード/ダウンロードに使用するものです。

パーサーが MTOM をサポートしていることを確認するか、このようなものを使用して新しいバインディングとエンドポイントを作成し、messageEnconding="Text" 属性を確認してください。

<binding name="streamUpload_basicHttp" maxReceivedMessageSize="209715200"
         transferMode="StreamedRequest" messageEncoding="Text" 
         receiveTimeout="00:10:00">
  <security mode="None" />
</binding>

Base 64 ですべての情報を渡します (パフォーマンスには最適ではありませんが、相互運用性があります)。

于 2012-07-02T18:52:30.800 に答える
2

WCF リーダー クォータのサイズは簡単に変更できます。

CoreService バインディングをプログラムで作成している場合 (ここに示すように)、コードで変更するだけです。

App.Config ファイルを使用してエンドポイントを構成している場合 (Tridion が %Tridion%/bin/client/Tridion.ContentManager.CoreService.Client.dll.config の下に同梱しているものなど)、このファイルを編集して変更しますクォータ。

私自身はかなり大きなクォータを使用する傾向があり、これまでのところ問題はありませんでした-あなたが言うように、コアサービスへのアクセスは通常かなりよく保護されています.

于 2012-06-29T21:07:50.210 に答える