2012-08-25 21 views
7

इसकी मेरी पहली बार सेट करते समय एक OData सेवा और मैं निश्चित रूप से कुछ समस्या हो रही है के हूँ ...अनुरोध त्रुटि WCF डेटा सेवाओं

समस्या यह है कि मैं सेवा चल नहीं मिल सकता है, मैं मिलती रहती है एक "अनुरोध त्रुटि"। Request Error

मेरे पास researched है जो समस्या हो सकती है और मुझे पता चला कि एक आम मुद्दा यह है कि एक्सेस नियम गलत तरीके से टाइप किए गए हैं। इसलिए मैंने सिंगलर नामों के साथ इसे ठीक करने की कोशिश की है, बहुवचन नाम और मैंने typeof(Post).getType().Name

के साथ भी कोशिश की है, ठीक है, यह मेरा कोड है। मुझे उम्मीद है कि आप मेरी मदद कर सकते हैं, मैं घंटों तक अटक गया हूं।

public class ODataService : DataService<Entity> 
{ 
    // This method is called only once to initialize service-wide policies. 
    public static void InitializeService(DataServiceConfiguration config) 
    { 
     //config.SetEntitySetAccessRule("Users", EntitySetRights.All); 
     //config.SetEntitySetAccessRule("Posts", EntitySetRights.All); 
     //config.SetEntitySetAccessRule("Albums", EntitySetRights.All); 


     config.SetEntitySetAccessRule("*", EntitySetRights.AllRead); 
     config.SetServiceOperationAccessRule("*", ServiceOperationRights.AllRead); 
     //config.SetServiceOperationAccessRule("GetPosts", ServiceOperationRights.AllRead); 

     config.UseVerboseErrors = true; 
     config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2; 
    } 

    [WebGet] 
    public IQueryable<Post> GetPosts() 
    { 
     return CurrentDataSource.Posts.AsQueryable(); 
    } 
} 

मेरी EntityFramework वर्ग की संरचना (db पहले) The structure of my EntityFramework class (db first)

तरीके और इकाई वर्ग के लिए सदस्यों को। यहां इकाइयों को बहुवचन में लिखा गया है।

<?xml version="1.0"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=169433 
    --> 
<configuration> 
    <connectionStrings> 
    <add name="Entity" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=&quot;data source=XXX;Initial Catalog=XXX;persist security info=True;user id=XXX;password=XXX;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    <httpRuntime requestValidationMode="4.5" targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
    <pages controlRenderingCompatibilityVersion="4.5" /> 
    <machineKey compatibilityMode="Framework45" /> 
    </system.web> 
<system.serviceModel> 
    <services> 
     <service name="LinkIT.Core.OData.ODataService" behaviorConfiguration ="DebugEnabled"> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors > 
     <behavior name="DebugEnabled"> 
      <serviceDebug includeExceptionDetailInFaults="True"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    </system.serviceModel> 
</configuration> 

एक विस्तृत त्रुटि संदेश:

सर्वर अनुरोध संसाधित करने में त्रुटि का सामना करना पड़ा Methods and Members for Entity class

यह मेरा Web.config है। अपवाद संदेश है 'मान शून्य नहीं हो सकता है। पैरामीटर नाम: संपत्ति संसाधन स्रोत टाइप करें। अधिक जानकारी के लिए सर्वर लॉग देखें। अपवाद स्टैक ट्रेस है:

System.Data.Services.WebUtil.CheckArgumentNull [टी] पर (टी मूल्य, स्ट्रिंग parameterName) System.Data.Services.Providers.ResourceProperty..ctor (स्ट्रिंग नाम पर, ResourcePropertyKind तरह, System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMemberMetadata (ResourceType resourceType, IProviderMetadata कार्यक्षेत्र में ResourceType propertyResourceType), IDictionary knownTypes, IDictionary 2 childTypes, IDictionary 2 entitySets) System.Data.Services.Providers.BaseServiceProvider पर System.Data.Servic पर .PopulateMetadata() es.Providers.BaseServiceProvider.LoadMetadata() पर System.Data.Services.DataService 1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, BaseServiceProvider& builtInProvider, Object& dataSourceInstance) at System.Data.Services.DataService SyncInvokeProcessRequestForMessage पर System.Data.Services.DataService 1.HandleRequest() at System.Data.Services.DataService 1.ProcessRequestForMessage (स्ट्रीम messageBody) पर 1.CreateProvider() (वस्तु, वस्तु [ ], System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke (वस्तु कहने पर वस्तु []), (MessageRpc & [] आदानों वस्तु, RPC System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin पर वस्तु [] & आउटपुट)) सिस्टम.erviceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5 (MessageRpc System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 पर System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41 (MessageRpc & RPC) (MessageRpc & RPC) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime पर पर RPC)।ProcessMessage31 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime पर System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3 (MessageRpc & RPC) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2 (MessageRpc & RPC) पर पर (MessageRpc & RPC) .ProcessMessage11 (MessageRpc & RPC) System.ServiceModel.Dispatcher.MessageRpc.Process पर System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (MessageRpc & RPC) (बूलियन isOperationContextSet) पर

+3

क्या आप अधिक विस्तृत त्रुटि संदेश प्राप्त करने के लिए यहां निर्देशों का पालन कर सकते हैं? http://blogs.msdn.com/b/phaniraj/archive/2008/06/18/debugging-ado-net-data-services.aspx –

+0

@VitekKarasMSFT टिप – LazyTarget

+0

के लिए धन्यवाद आपकी संपत्तियों में से एक एनम/स्थानिक प्रकार? –

उत्तर

10

डब्ल्यूसीएफ डाटा सर्विसेज टीम confirms - जब आप Enums (जो अभी तक समर्थित नहीं है) का उपयोग करते हैं तो यह सही त्रुटि का सामना करना पड़ता है।

एनम प्रकारों को हटाएं (या उनके सुझाए गए काम का उपयोग करें और enum गुणों के चारों ओर एक रैपर का उपयोग करें) और यह दूर जाना चाहिए।