C# 添加新实体期间调试WCF数据服务上的数据服务请求异常

C# 添加新实体期间调试WCF数据服务上的数据服务请求异常,c#,wcf,wcf-data-services,silverlight-5.0,C#,Wcf,Wcf Data Services,Silverlight 5.0,这是我的服务代码: using System; using System.Collections.Generic; using System.Data.Services; using System.Data.Services.Common; using System.Linq; using System.Linq.Expressions; using System.ServiceModel; using System.ServiceModel.Description; using System.

这是我的服务代码:

using System;
using System.Collections.Generic;
using System.Data.Services;
using System.Data.Services.Common;
using System.Linq;
using System.Linq.Expressions;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Web;
using System.Web;

namespace RadAppSilver.Web
{
    public class DsWFS006 : DataService<WFS006Entities>
    {
        public DsWFS006()
        {
            ServiceHost host = new ServiceHost(typeof(DsWFS006));
            ServiceDebugBehavior debug = host.Description.Behaviors.Find<ServiceDebugBehavior>();
            // if not found - add behavior with setting turned on 
            if (debug == null)
            {
                host.Description.Behaviors.Add(
                     new ServiceDebugBehavior() { IncludeExceptionDetailInFaults = true });
            }
            else
            {
                // make sure setting is turned ON
                if (!debug.IncludeExceptionDetailInFaults)
                {
                    debug.IncludeExceptionDetailInFaults = true;
                }
            }
            host.Open();
            // This method is called only once to initialize service-wide policies.
        }

        public static void InitializeService(DataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("*", EntitySetRights.All);
            config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
            //config.SetEntitySetPageSize("DocDetail", 30);            
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;            
        }              
    }    
}
此代码包括在我的客户端上初始化服务:

private void SetContext()
    {
        service = new DSEntity();

        DataServiceQuery<DS1.Accounts> queryAcc = (DataServiceQuery<DS1.Accounts>)
                                                  (service.Accounts.Select(m =>
                                                      new DS1.Accounts
                                                   {
                                                       AccNo = m.AccNo,
                                                       AccDesc = m.AccDesc
                                                   }));
        queryAcc.BeginExecute(t =>
        {
            DataServiceQuery<DS1.Accounts> state = t.AsyncState as DataServiceQuery<DS1.Accounts>;
            var executedState = state.EndExecute(t);
            ObservableCollection<DS1.Accounts> data = new ObservableCollection<DS1.Accounts>();
            foreach (var entity in executedState)
                data.Add(entity);
            AccCache = data.ToList();
        }, queryAcc);

        var view = new VirtualQueryableCollectionView() { LoadSize = 300, VirtualItemCount = 10000 };
        view.ItemsLoading += (y, e) =>
        {
            DataServiceQuery<DS1.DocDetail> query = (DataServiceQuery<DS1.DocDetail>)
                service.DocDetail.OrderBy(it => it.Item)
                                     .Where<DS1.DocDetail>(it => it.DocSerNo == 91120001)
                                     .Where(view.FilterDescriptors)
                                     .Sort(view.SortDescriptors)
                                     .Skip(e.StartIndex)
                                     .Take(e.ItemCount);
            query = query.IncludeTotalCount();
            query.BeginExecute(
                  s =>
                  {
                      DataServiceQuery<DS1.DocDetail> state = s.AsyncState as DataServiceQuery<DS1.DocDetail>;
                      var executedState = state.EndExecute(s);
                      var response = executedState as QueryOperationResponse<DS1.DocDetail>;
                      int count = (int)response.TotalCount;
                      ObservableCollection<DS1.DocDetail> data = new ObservableCollection<DS1.DocDetail>();
                      foreach (var entity in executedState)
                          data.Add(entity);
                      var dataSource = data.ToList();
                      view.VirtualItemCount = count;
                      view.Load(e.StartIndex, dataSource);
                  }, query);
        };
        grid1.ItemsSource = view;
    }
private void SetContext()
{
服务=新的DSEntity();
DataServiceQuery queryAcc=(DataServiceQuery)
(service.Accounts.Select(m=>
新DS1.帐户
{
AccNo=m.AccNo,
AccDesc=m.AccDesc
}));
queryAcc.BeginExecute(t=>
{
DataServiceQuery状态=t.AsyncState作为DataServiceQuery;
var executestate=state.EndExecute(t);
ObservableCollection数据=新的ObservableCollection();
foreach(处于executedState的var实体)
数据。添加(实体);
AccCache=data.ToList();
},queryAcc);
var view=new VirtualQueryableCollectionView(){LoadSize=300,VirtualItemCount=10000};
view.ItemsLoading+=(y,e)=>
{
DataServiceQuery=(DataServiceQuery)
service.DocDetail.OrderBy(it=>it.Item)
.Where(it=>it.DocSerNo==91120001)
.Where(视图过滤器描述器)
.Sort(view.SortDescriptors)
.跳过(如开始索引)
.采取(如项目计数);
query=query.IncludeTotalCount();
query.BeginExecute(
s=>
{
DataServiceQuery状态=s.AsyncState作为DataServiceQuery;
var executestate=state.EndExecute;
var response=执行状态为QueryOperationResponse;
int count=(int)response.TotalCount;
ObservableCollection数据=新的ObservableCollection();
foreach(处于executedState的var实体)
数据。添加(实体);
var dataSource=data.ToList();
view.VirtualItemCount=计数;
view.Load(例如StartIndex、数据源);
},查询);
};
grid1.ItemsSource=视图;
}

添加新对象时它不起作用,添加host.open()时,exception不会给我任何详细信息;在构造函数上显示异常详细信息,服务已停止。

包括调试wcf服务的所有选项

1.将以下属性应用于您的服务类 [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults=true)]

  • 重写服务类中的以下两个方法 A.受保护的覆盖无效OnStartProcessingRequest(ProcessRequestArgs args) b、 受保护的覆盖无效HandleException(HandleExceptionArgs)

  • 设置这两种方法的断点,然后查看哪种类型的异常。

    您是否尝试过使用?否您能否完整地回答问题?
    private void SetContext()
        {
            service = new DSEntity();
    
            DataServiceQuery<DS1.Accounts> queryAcc = (DataServiceQuery<DS1.Accounts>)
                                                      (service.Accounts.Select(m =>
                                                          new DS1.Accounts
                                                       {
                                                           AccNo = m.AccNo,
                                                           AccDesc = m.AccDesc
                                                       }));
            queryAcc.BeginExecute(t =>
            {
                DataServiceQuery<DS1.Accounts> state = t.AsyncState as DataServiceQuery<DS1.Accounts>;
                var executedState = state.EndExecute(t);
                ObservableCollection<DS1.Accounts> data = new ObservableCollection<DS1.Accounts>();
                foreach (var entity in executedState)
                    data.Add(entity);
                AccCache = data.ToList();
            }, queryAcc);
    
            var view = new VirtualQueryableCollectionView() { LoadSize = 300, VirtualItemCount = 10000 };
            view.ItemsLoading += (y, e) =>
            {
                DataServiceQuery<DS1.DocDetail> query = (DataServiceQuery<DS1.DocDetail>)
                    service.DocDetail.OrderBy(it => it.Item)
                                         .Where<DS1.DocDetail>(it => it.DocSerNo == 91120001)
                                         .Where(view.FilterDescriptors)
                                         .Sort(view.SortDescriptors)
                                         .Skip(e.StartIndex)
                                         .Take(e.ItemCount);
                query = query.IncludeTotalCount();
                query.BeginExecute(
                      s =>
                      {
                          DataServiceQuery<DS1.DocDetail> state = s.AsyncState as DataServiceQuery<DS1.DocDetail>;
                          var executedState = state.EndExecute(s);
                          var response = executedState as QueryOperationResponse<DS1.DocDetail>;
                          int count = (int)response.TotalCount;
                          ObservableCollection<DS1.DocDetail> data = new ObservableCollection<DS1.DocDetail>();
                          foreach (var entity in executedState)
                              data.Add(entity);
                          var dataSource = data.ToList();
                          view.VirtualItemCount = count;
                          view.Load(e.StartIndex, dataSource);
                      }, query);
            };
            grid1.ItemsSource = view;
        }