首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WCF数据服务-如何诊断请求错误?

WCF数据服务-如何诊断请求错误?
EN

Stack Overflow用户
提问于 2010-02-23 01:51:15
回答 1查看 12.5K关注 0票数 18

我有一个应用程序,它将使用WCF提供各种数据块给客户。但是,由于将返回的一些数据集的大小(这是因为客户端应用程序需要在列表中显示大量对象,而不是因为我在设计中一直懒惰),我遇到了消息大小限制。

我预料到了这一点,并计划实现数据分页/响应流(我相信Pablo Cibraro曾经写过一篇关于这方面的文章)。然而,我见过一些让WCF数据服务看起来很酷的演示。我只是不能让它为我工作。

我没有数据库后端,也没有托管在IIS中。我已经能够得到一些在基本对象上工作的例子,但是一旦我把它插入到我的应用程序的对象中,它就不能工作了-我得到了一个请求错误,这似乎是被设计成没有帮助的-它只是建议检查服务器日志,而不是建议我如何做。我怀疑它假设我使用IIS托管,并且IIS可能会记录它托管的数据服务的消息。

我正在尝试使用的一个相当简单的类是日志消息(我希望一个诊断仪表板样式的客户端能够远程显示服务器日志,比如最近24小时的日志):

代码语言:javascript
复制
public class Message
{
    public string Source { get; set; }
    public MessageType Type { get; set; }
    public DateTime Timestamp { get; set; }
    public string MessageText { get; set; }
    public override string ToString()
    {
        return string.Format("[{0}] [{1}] [{2}] {3}", Timestamp.ToString(), Source, Type, MessageText);
    }
}

使用这个类会产生错误,而如果我将它指向我模拟为测试的类(就像在Pablo的演示中:http://msdn.microsoft.com/en-us/data/cc745968.aspx),那么它工作得很好。对于为什么会这样,或者我如何从错误中获得有用的东西,有什么想法吗?

下面是我的服务定义和我用来公开我想要返回的集合的IQueryable<>实现的类(目前我只完成了日志,它是List<Message>类型)

代码语言:javascript
复制
public class DataServiceFacade
{
    public IQueryable<Message> Log
    {
        get
        {
            return Program.Log.AsQueryable();
        }
    }
}

public class DataServiceHost : DataService<DataServiceFacade>
{
    public static void InitializeService(IDataServiceConfiguration config)
    {
        config.UseVerboseErrors = true;
        config.SetEntitySetAccessRule("*", EntitySetRights.All);
        config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
    }
}

现在,这可能是一件简单的事情,但我已经花了太多的时间去撞这个特殊的砖墙。我希望数据服务能为我处理像分页这样的事情,并给我一个很好的灵活的格式,可以在不同的平台上工作。

此外,如果不能使用数据服务来实现这一点,我将非常感谢任何有关数据分页或流式传输集合的建议。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-23 02:16:05

听起来您只看到了通用的“响应错误”消息。要查看该消息的详细信息,您需要将行为修改为"includeExceptionDetailInFaults“。

您可以在配置文件中更改行为。

代码语言:javascript
复制
<services>
    <service name="DataServiceHost"
             behaviorConfiguration="DataServiceBehavior">
        <endpoint name="DataServiceHost"
                  address=""
                  binding="webHttpBinding"
                  contract="System.Data.Services.IRequestHandler" />

    </service>
</services>
<behaviors>
    <serviceBehaviors>
        <behavior name="DataServiceBehavior">
            <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
    </serviceBehaviors>
</behaviors>
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2312894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档