2012-08-25 20 views
7

Onun kuran bir OData Servis ve benİstek hatası WCF Veri Hizmetleri

Sorun hizmetinizin çalışmaya alamayan olmasıdır ... Elbette bazı sorunlar yaşama olduğum benim ilk kez, ben almaya devam bir "İstek Hatası". Request Error

Sorunum ne olabilir researched var ve ben ortak bir sorun erişim kurallarının yanlış yazılan olduğunu buldum. Bu yüzden Tekil isimler, Çoğul isimlerle de bu sabitleme denedim ve ben de burada Eh typeof(Post).getType().Name

benim kodudur ile çalıştık. Umarım bana yardım edebilirsin, saatlerce sıkışıp kaldım.

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(); 
    } 
} 

Varlık sınıfı için The structure of my EntityFramework class (db first)

Yöntem ve Üyeleri (db önce) benim EntityFramework sınıfının yapısı. Burada varlıklar çoğul olarak yazılır.

<?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> 

Detaylı bir hata mesajı:

Sunucu isteği işlerken bir hatayla karşılaştı Methods and Members for Entity class

Bu benim Web.config olduğunu. istisnası 'Değer boş olamaz. Parametre adı: propertyResourceType '. Daha fazla bilgi için sunucu günlüklerine bakın. özel Yığın izleme: System.Data.Services.WebUtil.CheckArgumentNull [T] 'de

(T değeri String parameterName) System.Data.Services.Providers.ResourceProperty..ctor (String adı en, ResourcePropertyKind tür System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMemberMetadata (KaynakTürü resourcetype, IProviderMetadata çalışma alanı en KaynakTürü propertyResourceType), System.Data.Services.Providers.BaseServiceProvider de ıdictionary knownTypes ıdictionary 2 childTypes, IDictionary 2 entitySets) .PopulateMetadata() System.Data.Servic adresinde es.Providers.BaseServiceProvider.LoadMetadata() SyncInvokeProcessRequestForMessage de System.Data.Services.DataService 1.HandleRequest() at System.Data.Services.DataService 1.ProcessRequestForMessage (Akış messageBody) en System.Data.Services.DataService 1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, BaseServiceProvider& builtInProvider, Object& dataSourceInstance) at System.Data.Services.DataService 1.CreateProvider() (Obje, nesne [ ] Nesne []) System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke (nesne derecede, (MessageRpc & System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin de [] & çıkışları) Nesne RPC [] girişler Nesne) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5 (MessageRpc) System.ServiceModel.Dispatcher.ImmutableDispatchRuntime de System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4 de System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41 (MessageRpc & RPC) (MessageRpc & RPC) en RPC). System.ServiceModel.Dispatcher.ImmutableDispatchRuntime de System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2 (MessageRpc & RPC) en System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3 (MessageRpc & RPC) de ProcessMessage31 (MessageRpc & RPC) System.ServiceModel.Dispatcher.MessageRpc.Process de System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1 (MessageRpc & rPC) (Boolean isOperationContextSet) de .ProcessMessage11 (MessageRpc & rPC)

+3

Daha ayrıntılı bir hata mesajı almak için lütfen buradaki talimatları izleyin misiniz? http://blogs.msdn.com/b/phaniraj/archive/2008/06/18/debugging-ado-net-data-services.aspx –

+0

@VitekKarasMSFT Teşekkür ederiz – LazyTarget

+0

Evinizden biri bir Enum/Uzamsal tip? –

cevap

10

WCF Data Services ekibi confirms - Enums (henüz desteklenmeyen) kullandığınızda bu tam olarak karşılaşılan hatadır.

Enum türlerini kaldırın (ya da önerilen çalışmalarını kullanın ve enum özelliklerinin etrafına sarıcı kullanın) ve bu işlem gitmeli.

İlgili konular