【问题标题】:Using interface in service contract instead of concrete type in WCF在服务合同中使用接口而不是 WCF 中的具体类型
【发布时间】:2023-03-30 16:20:01
【问题描述】:

我有 WCF 服务操作,它接受接口作为输入类型。从 jQuery Ajax 调用此服务操作时,我收到消息“由于内部错误,服务器无法处理请求”。如果输入类型是具体类,则 jQuery 代码工作文件。请告诉我是否有任何方法可以实现这种实现。

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]    
public class TestService
{
    [OperationContract]
    [ServiceKnownType(typeof(User))]
    public void SetUser(IUser request)
    {
    }
}

【问题讨论】:

    标签: c# jquery ajax wcf json


    【解决方案1】:

    这在 WCF 中是可能的,所以问题是真正的异常消息是什么。当您使用 jQuery 调用服务时,您是否正在调试应用程序?

    要获得有关实际异常的更多信息,您应该使用 svcTraceViewer。如果您之前没有使用过 svcTraceViewer,那么您可能需要查看我博客上的一篇博文

    svcTraceViewer - Debugging WCF Sevices

    【讨论】:

    • 异常发生在调用服务器之前,因为它无法解析输入类型。因此 svcTraceView 不显示任何详细信息。
    • 服务器是试图解析方法参数的服务器,所以您应该在 svcTraceViewer 中看到一个错误(前提是您已正确设置跟踪)。这是服务器端错误。只是 WCF 没有向客户端发送真正的异常消息。无论哪种方式,在不知道实际异常的情况下,这将是一个命中注定的事情。
    • 我在 svcTraceViewer 中收到“无法将 'System.Object' 类型的对象强制转换为类型 'ProcessFlowController.IUser'”消息。
    • 你有它。您现在知道错误是什么,因此您可以解决它。
    • 但是在进行 ajax 调用时如何从 javascript 发送类型信息?
    猜你喜欢
    • 2018-11-10
    • 2012-11-29
    • 2011-01-06
    • 2011-05-14
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    相关资源
    最近更新 更多