わかった。通常、私は質問をするのが嫌いですが、私が抱えているこの問題は私の頭を悩ませてきました.
同社は、SharePoint と通信する wcf サービスを開発しています。私たちはなんとかそれを機能させ、SharePointからの呼び出しとファイルを受信しましたが、小さなファイルに対してのみ機能しました. sharepoint の設定は、最大 250 MB のファイルを受け入れるように設定されています。web.config ファイルでは、メッセージ サイズに関連するすべての設定が最大 ( int32
) に設定されています。サービスを実行すると、22 KB を超えるファイルは受け入れられません。
トレースを行ったところ、1 つの警告と 1 つのエラーが発生しました。最初に、次のような警告が表示されます。
説明 構成システムは、異なる構成スコープで重複するキーを検出し、より新しい値でオーバーライドしています。
そして、メッセージの最大サイズが [64 KB] を超えているというエラーが表示されました。
問題は、web.config に絶対最大サイズを設定したにもかかわらず、23 KB 以上のファイルでこのエラーが発生することです。警告は、構成ファイルが上書きされていることを示していますが、何が原因ですか? 解決策を求めて過去 3 日間あらゆる場所を探しましたが、何も見つかりませんでした。
何が間違っているのか誰にも分かりますか?何がファイルを上書きしている可能性がありweb.config
ますか? また、何らかの理由でデフォルト値で上書きされた場合、22 KB を超えるメッセージを受け入れないのはなぜですか。
どんな助けでも大歓迎です。
編集:問題が見つかりました
まだ同様の問題を抱えている人のために、私が見つけたものをここに載せます。
もちろん、通常のメッセージサイズの設定
<binding maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
そして、問題を修正したサンプルコードで偶然見つけた別の設定(サイズが最大64MBのファイルでテストを実行しても、それ以上の問題はありませんでした)
<system.webServer>
<serverRuntime uploadReadAheadSize="2147483647" />
<modules runAllManagedModulesForAllRequests="true"/>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
</security>
</system.webServer>
どうやら、requestLimits maxAllowedContentLength
デフォルトで非常に低く設定されており、おそらくセキュリティ設定であるため、他のすべての設定を上書きしていました。
はserverRuntime uploadReadAheadSize
最大サイズに影響を与える可能性がありますが、直接的な意味ではありません。私は説明が下手なので、公式ドキュメントを読んだほうがいいでしょう。