そもそも、私の質問はオンラインで見つけたたくさんの答えに基づいており、誰かが明確な答えを出してくれることを望んでいます。
私の現在の調査結果から要約すると、非常に短い質問です。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サーバーを使用してファイルをダンプするなどの代替手段を知っているので、マルチメディアコンポーネントを作成するときにそれらを「外部」として参照できますが、そのルートに進む必要はありません。 。