0

私は簡単なプログラム、ウェブサービスを追加したasp.netウェブサイトを持っていました

Webメソッドの1つがCRMにアクセスしました`

 [WebMethod]
public bool RecordExists (String projectName)
{
    var service = GetService("http://localhost/EventoCorp/");

    Entity project = new Entity("new_project");

    /*PROJECT DETAILS*/
    project.Attributes["new_name"] = projectName;
    var request = new RetrieveDuplicatesRequest
    {
        BusinessEntity = project,
        MatchingEntityName = "new_project",
        PagingInfo = new PagingInfo() { PageNumber = 1, Count = 50 }
    };

    Console.WriteLine("Retrieving duplicates");
    var response = service.Execute(request);
    EntityCollection collection = (EntityCollection)response.Results["DuplicateCollection"];

    return collection.Entities.Count > 1 ? true : false;
}

F5を押すと。プロジェクトは正常に実行されます。このレコードが存在するメソッドを呼び出すと、CRM2011からデータが正しく取得されます

ただし、このアプリケーションをIIS7.5に展開すると。私はこのひどく有益でない例外によって迎えられます

System.ServiceModel.FaultException: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.

サーバースタックトレース:

 at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
   at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

私はCRM2011の初心者です。何が起こっているのか分かりません。私を助けてください

4

1 に答える 1

0

この例外は、Webサービスに接続しようとしたときに使用するクライアントで発生します。未処理の例外がサーバー側で発生したことだけを示していますが、例外に関する情報はありません。IncludeExceptionDetailInFaultsまた、未処理の例外の詳細をクライアントに渡すために有効にするアドバイスがあります。ただし、何が起こっているかを確認する他の方法もあります。IISプロセスに接続し、Webサービスをデバッグします。
また、コードは完全に安全ではないため、コードに例外処理を追加することをお勧めします。CRMにアクセスしているときに、認証例外などのさまざまな例外が発生する可能性があります。また、そこにあると想定されるコレクションの代わりにnullを取得することもできます。
このコードをIISに展開すると、IISはNETWORK SERVICEアカウントで動作しているため、認証の問題が発生する可能性があります。また、CRMがWindows認証を使用している場合、要求が承認されない可能性があります。

于 2013-01-13T12:57:16.310 に答える