1

CRM 2011 (オンプレミス) 展開および検出サービスを、.Net 2.0 (および当分の間アップグレードできないため、wcf サービスを Web サービスとして使用し、その basichttpbinding を使用しようとしています)。クラス ライブラリ別名はリモート サーバーで実行されます。たとえば、リモート ライブラリを .Net リモート処理を使用して実行します。次のコードを使用して CRM 2011 組織を作成しています。

_CrmDeployService = New DeploymentService()
        _CrmDeployService.SoapVersion = SoapProtocolVersion.Soap12

        _CrmDeployService.Url = CRMDeploymentServiceURl
        _CrmDeployService.Credentials = DomainCredentials

' Do all sorts of Active Directory STuff, 
'which is successfull
'Now Creat eCRM organization

 Dim CRMOrg As CRM2011DeploymentSvc.Organization = New CRM2011DeploymentSvc.Organization()
        CRMOrg.UniqueName = OrgUniqName
        CRMOrg.FriendlyName = OrgDispName
        CRMOrg.SqlServerName = SQLServerName
        CRMOrg.SrsUrl = ReportServerUrl
        CRMOrg.BaseCurrencyCode = CurrencyCode
        CRMOrg.BaseCurrencyName = CurrencyName
        CRMOrg.BaseCurrencySymbol = ""
        CRMOrg.State = CRM2011DeploymentSvc.OrganizationState.Enabled

    'Initialize Request Object to Send CRM Organization Request and set properties

      Dim req As New BeginCreateOrganizationRequest() With {.Organization = CRMOrg}
                    _CrmDeployService.Timeout = 720000
                    'Execute deployment service given createrequest object
                    Dim _
                        resp As BeginCreateOrganizationResponse = _
                            TryCast(_CrmDeployService.Execute(req), BeginCreateOrganizationResponse)

上記のコードは、別のアプリケーションで実行すると完全に機能します。しかし、プロジェクトのリモートクラスライブラリの一部に同じコードを書いたところ、15分以上操作が続いたようで、その後CRMサービスから以下のメッセージが返ってきて表示されています

操作タイムアウト

リモート呼び出しに問題がないことは確かです。ソリューション全体でリモート呼び出しを使用していますが、シリアル化の問題もありません。

また、以前、 soap12プロトコル バージョンを指定せに CRM 2011 サービスを呼び出そうとしましたが、次のエラーが発生しました。

HTTP/1.1 415 コンテンツ タイプが 'text/xml; であるため、メッセージを処理できません。charset=utf-8' は、予期されたタイプ 'application/soap+xml;' ではありませんでした。charset=utf-8'.

だから私は自分のコードに次の行を追加しました:

 _CrmDeployService.SoapVersion = SoapProtocolVersion.Soap12

問題はなくなりましたが、今ではこのタイムアウトの問題があります。

質問: これは、サーバーでの CRM 構成またはサーバーでの HTTP タイムアウト設定またはサーバーでの WCF サービス設定に問題があるのでしょうか、それともすべて間違っているのでしょうか? コードに問題がある場合は、どのようにすべきかを提案してください。

何らかの構成や設定が必要な場合は、その旨もお知らせください。

回答をお待ちしております。

ありがとうございました。

4

1 に答える 1

0

私は問題を発見したと思います。basicHttpBindingモード (レガシー サポート モード) を使用していて、Web サービスとして互換モードで WCF サービスを追加した場合、WCF サービスはエラーを返しませんでした。

ライブラリ プロジェクトを 3.0 にアップグレードした後、Web サービス参照を削除して WCF サービス参照として追加すると、適切なエラーが返されました。問題は、エンドポイントとバインディング/コントラクト情報を含む構成ファイルが見つからないことでした。

多層システム (.Net Remoting) を開発し、WCF サービスを介して通信する場合、通信に関係するすべての層のアプリケーション構成ファイルにエンドポイントとバインド情報を配置する必要があります。私のシナリオは次のようなものでした:

Tier 01 ASP.Net アプリケーション + クラス ライブラリ XYZ と WCf リファレンス


Tier 02 (Windows サービス (.Net Exe) + クラス ライブラリ XYZ と WCf リファレンス ) + CRM 2011 WCF サービス)

新しいアーキテクチャは次のとおりです。

層 01 (クライアント) (ASP.Net アプリケーション (web.config に追加されたエンドポイント/バインディング情報) + WCF サービス リファレンスを含むクラス ライブラリ XYZ)


Tier 02 (リモート サーバー) .Net Windows サービス (app.config に追加されたエンドポイント/バインディング情報) + クラス ライブラリ XYZ と WCF サービス リファレンス ) + CRM 2011 WCF サービス

于 2011-04-15T07:50:33.313 に答える