0

我有一个简单的程序,一个 asp.net 网站,我在其中添加了一个 web 服务

其中一种网络方法访问了 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 时。该项目运行良好。我调用此记录存在方法,它正确地从 CRM 2011 中获取数据

但是,当我在 IIS 7.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)

我是 CRM 2011 新手。不知道发生了什么。请帮我

4

1 回答 1

0

此异常发生在您尝试连接 Web 服务时使用的客户端中。它只说服务器端发生了未处理的异常,但没有关于异常的信息。还有一些建议可以启用IncludeExceptionDetailInFaults,以便将未处理的异常详细信息传递给客户端。但是还有其他方法可以查看发生了什么,它附加到 IIS 进程并调试您的 Web 服务。
此外,最好在您的代码中添加异常处理,因为现在代码完全不安全。当您访问 CRM 时,可能会发生不同的异常,例如身份验证异常等。您也可以只获取 null 而不是您认为存在的集合。
当您将此代码部署到 IIS 时,可能会出现身份验证问题,因为 IIS 在 NETWORK SERVICE 帐户下工作。如果 CRM 使用 Windows 身份验证,则您的请求可能不会被授权。

于 2013-01-13T12:57:16.310 回答