BCS モデルによって StreamAccessor として参照される System.IO.Stream を返す単一のメソッドを使用して、WCF サービスをセットアップしました。[ここをクリックしてダウンロード] をクリックして、BCS プロファイル ページからファイルを表示すると、すべて正常に動作します。
SharePoint 検索を使用して BCS アプリケーションをクロールしようとすると、問題が発生します。SharePoint が BCS LOB をクロールすると、ファイルごとに次の警告がスローされます。
このアイテムは複数のパーツで構成されているか、付属品が付いている場合があります。これらのパーツのすべてが索引付けされたわけではありません。それらは無効であるか、意図的にスキップされている可能性があります (画像など)。これらのパーツのインデックス作成中に、リモート サーバーが応答しなくなった可能性もあります。( ServiceModel クライアント構成セクションでコントラクト 'RH.Wcf.IEmailFilerGetService' を参照するデフォルトのエンドポイント要素が見つかりませんでした。アプリケーションの構成ファイルが見つからなかったか、このコントラクトに一致するエンドポイント要素がクライアント要素。)
Central Admin とメイン サイトが実行されている Web アプリケーションの両方の web.config ファイルに正しい設定とバインドがあります。
GetMessage StreamAccessor の WCF 設定でハード コードしようとするところまで行きました。
SecurityBindingElement securityElement = SecurityBindingElement.CreateUserNameOverTransportBindingElement();
HttpsTransportBindingElement httpsTransport = new HttpsTransportBindingElement();
httpsTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Ntlm;
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Ntlm;
binding.CloseTimeout = new TimeSpan(00, 05, 00);
binding.OpenTimeout = new TimeSpan(00, 05, 00);
binding.ReceiveTimeout = new TimeSpan(00, 05, 00);
binding.SendTimeout = new TimeSpan(00, 05, 00);
binding.TextEncoding = System.Text.Encoding.UTF8;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
binding.MessageEncoding = WSMessageEncoding.Mtom;
binding.AllowCookies = false;
binding.TransferMode = TransferMode.Buffered;
binding.BypassProxyOnLocal = true;
binding.Security.Mode = BasicHttpSecurityMode.None;
binding.ReaderQuotas.MaxArrayLength = int.MaxValue;
binding.ReaderQuotas.MaxBytesPerRead = int.MaxValue;
binding.ReaderQuotas.MaxDepth = int.MaxValue;
binding.ReaderQuotas.MaxNameTableCharCount = int.MaxValue;
binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
//binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, XmlDictionaryReaderQuotas.Max, null);
EndpointAddress endPoint = new EndpointAddress("http://MYSERVER:1234/EmailFilerGetService.svc");
ChannelFactory<IEmailFilerGetServiceChannel> chan = new ChannelFactory<IEmailFilerGetServiceChannel>(binding, endPoint);
IEmailFilerGetServiceChannel wc = chan.CreateChannel();
RHEmailDownloadStreamArg arg = new RHEmailDownloadStreamArg(emailId);
RHEmailDownloadStream str = wc.GetSingleMsg(arg);
ここで何が起こっているのか理解できません。これはただの狂気です。
私が実行している環境。
SharePoint 2010 バージョン 14.0.6029.1000
WCF サービスは .NET Framework 4.0 です
BCS サービスは、SharePoint の要件に従って .NET Framework 3.5 で実行されます。
助けてください!