Laz*_*get 7 entity-framework wcf-data-services odata
这是我第一次建立OData服务,我当然遇到了一些问题......
问题是我无法运行服务,我不断收到"请求错误".
我已经研究了问题是什么,我发现一个常见的问题是访问规则输入错误.所以我尝试用奇异的名字,多个名字修复这个,我也尝试过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();
}
}
Run Code Online (Sandbox Code Playgroud)
我的EntityFramework类的结构(db first)
实体类的方法和成员.这里的实体拼写为复数形式.
这是我的Web.config:
<?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="data source=XXX;Initial Catalog=XXX;persist security info=True;user id=XXX;password=XXX;MultipleActiveResultSets=True;App=EntityFramework"" 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>
Run Code Online (Sandbox Code Playgroud)
详细的错误消息:
服务器遇到处理请求的错误.异常消息是'值不能为空.参数名称:propertyResourceType'.请参阅服务器日志以获取更多详 异常堆栈跟踪是:
在System.Data.Services的System.Data.Services.WebUtil.CheckArgumentNull [T](T值,String parameterName)处于System.Data.Services的System.Data.Services.Providers.ResourceProperty..ctor(String name,ResourcePropertyKind kind,ResourceType propertyResourceType).系统中的System.Data.Services.Providers.BaseServiceProvider.PopulateMetadata()处于System.Data.Services.Providers.BaseServiceProvider.LoadMetadata()的Providers.ObjectContextServiceProvider.PopulateMemberMetadata(ResourceType resourceType,IProviderMetadata workspace,IDictionary
2 knownTypes, PrimitiveResourceTypeMap primitiveResourceTypeMap) at System.Data.Services.Providers.ObjectContextServiceProvider.PopulateMetadata(IDictionary
2 knownTypes,IDictionary2 childTypes, IDictionary
2 entitySets) System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke 上的SyncInvokeProcessRequestForMessage(Object,Object [],Object [])处的1.CreateMetadataAndQueryProviders(IDataServiceMetadataProvider& metadataProviderInstance, IDataServiceQueryProvider& queryProviderInstance, BaseServiceProvider& builtInProvider, Object& dataSourceInstance) at System.Data.Services.DataService
System.Data.Services.DataService1.HandleRequest() at System.Data.Services.DataService
1.CrocessRequestForMessage(Stream messageBody)的.Data.Services.DataService 1.CreateProvider() System.ServiceModel.Dispatcher.Immutab上的System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc&rpc)中的对象实例,Object []输入,Object []和输出)位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc&rpc)的System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc&rpc)上的leDispatchRuntime.ProcessMessage5(MessageRpc&rpc),位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc&rpc)at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc&rpc)位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc&rpc)的System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc&rpc),位于System.ServiceModel.Dispatcher.ImmutableDispatchRuntime. System.ServiceModel.Dispatcher.MessageRpc.Process的ProcessMessage1(MessageRpc&rpc)(Boolean isOperationContextSet)
归档时间: |
|
查看次数: |
10407 次 |
最近记录: |