2012-08-27 24 views
6

Wykonuję prostą usługę danych WCF w kontekście LINQ do kontekstu danych SQL. Mój plik svc.cs jest bardzo prosty. Jednak po uruchomieniu go z VS2012, otrzymuję ogólny "Błąd żądania" bez dodatkowych informacji. Jak mogę rozwiązać/rozwiązać problem?Usługa danych WCF - żądanie błędu

using System; 
using System.Collections.Generic; 
using System.Data.Services; 
using System.Data.Services.Common; 
using System.Linq; 
using System.ServiceModel.Web; 
using System.Web; 
using MyApp.Business.Pmw.DataAccess; 

namespace MyApp.DataService 
{ 
    public class SystemData : DataService<PmwModelDataContext> 
    { 
     // This method is called only once to initialize service-wide policies. 
     public static void InitializeService(DataServiceConfiguration config) 
     { 
      config.SetEntitySetAccessRule("SysParam", EntitySetRights.ReadMultiple);    
      // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc. 
      // Examples: 
      // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead); 
      // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All); 
      config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; 
     } 
    } 
} 

Odpowiedz

19

Jeśli ustawisz atrybut [ServiceBehavior(IncludeExceptionDetailInFaults=true)] na służbie i ustawić config.UseVerboseErrors do true, dostaniesz dużo jaśniejszy komunikat o błędzie na stronie klienta. Pamiętaj, aby usunąć te ustawienia przed rozpoczęciem produkcji, ponieważ mogą one spowodować niezamierzone ujawnienie informacji:

[ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
public class FileService : DataService<FileContext> 
{ 
    public static void InitializeService(DataServiceConfiguration config) 
    { 
     config.UseVerboseErrors = true; 
     config.SetEntitySetAccessRule("*", EntitySetRights.AllRead); 
     config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3; 
    } 
}