WCFのよくある問題と解決策


1.WCFサービス側でHttpContextを使用する.Currentが空のソリューション:
1)サービス・エンド・WCFのクラスに説明を加える[AspNetCompatbilityRequirements(RequirementsMode=AspNetCompatbilityRequirementsMode.Allowed)]
2)サービス側WEBCONFIGのノードにを追加
2.WCFサービス側でHttpContextを使用する.Current.Server.MapPathの代替ソリューション:
  System.Web.Hosting.HostingEnvironment.MapPath("~/Upload"+ fileFolder);
3.大ファイルbyte[]転送の問題を解決する:
サービス側、Web.configファイルでは、Bindingsセクションは空ですが、ServiceではbindingConfigurationプロパティが指定されていません.デフォルトの65535のサイズが使用されます.
問題が見つかったら、解決は簡単です.
Bindingsセクションに新しいBinding設定(system.serviceModelノード)を追加し、最大許容データを指定します.
  <bindings>

      <basicHttpBinding>

          <binding name="LargeData" maxReceivedMessageSize="2147483647" messageEncoding="Text" 
            transferMode="Streamed" sendTimeout="00:10:00" />   </basicHttpBinding>   </bindings>

その後、対応するサービスにbindingConfigurationプロパティを指定します.
  <service behaviorConfiguration="Server.Service.WcfServiceBehavior"  name="Server.Service.WcfService">

    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="LargeData" 
         contract="Server.Service.WcfService" />   <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />   </service>

これにより、クライアントから十分なデータを送信できます.
  P.S.:
  .Netのデフォルトでは4 Mのファイルしか転送できないので、Wcfの両端の配置を設定しているにもかかわらず、超えられない.Netの限定なので、大きなファイルを転送するにはSystemが必要です.Webセクションに追加
    <httpRuntimemaxRequestLength="102400" />


ここの単位はKBです.これで100 Mのファイルを転送できます.もちろん、このような大きなファイルは、セグメント化したほうがいいです.
4.次のエラー解決策が発生しました.
①操作のためにメッセージを処理できない場合が多い」http://tempuri.org/」が正しくないか、メッセージに無効または期限切れのセキュリティコンテキストトークンが含まれているか、バインド間で不一致が発生しているためです.
解決策:クライアントとサービス側のbindingノード内で以下のノードを変更するだけです:
②タイムアウト問題
解決方法:クライアントの