Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用Excel Power Query连接到OData v4服务:元数据无效?_C#_Asp.net Web Api_Odata_Powerquery - Fatal编程技术网

C# 无法使用Excel Power Query连接到OData v4服务:元数据无效?

C# 无法使用Excel Power Query连接到OData v4服务:元数据无效?,c#,asp.net-web-api,odata,powerquery,C#,Asp.net Web Api,Odata,Powerquery,2015年4月版本的Excel Power Query宣传OData v4兼容性。但是,当我尝试连接到使用Web API编写的OData v4服务时(Microsoft.Data.OData.5.6.0,Microsoft.AspNet.WebApi.OData.5.5.1,Microsoft.OData.Core.6.10.0),我得到了一个 DataSource.错误:OData:提要的元数据文档似乎无效 我是唯一一个吗?有办法调试这个吗 以下是元数据文档: <?xml version

2015年4月版本的Excel Power Query宣传OData v4兼容性。但是,当我尝试连接到使用Web API编写的OData v4服务时(
Microsoft.Data.OData.5.6.0
Microsoft.AspNet.WebApi.OData.5.5.1
Microsoft.OData.Core.6.10.0
),我得到了一个

DataSource.错误:OData:提要的元数据文档似乎无效

我是唯一一个吗?有办法调试这个吗

以下是元数据文档:

<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:DataServices>
    <Schema Namespace="MyCompany.Api.OData" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EntityType Name="Position" OpenType="true">
        <Key>
          <PropertyRef Name="Id" />
        </Key>
        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
        <Property Name="PositionId" Type="Edm.String" />
        <Property Name="Description" Type="Edm.String" />
        <Property Name="StartDate" Type="Edm.Date" />
        <Property Name="Status" Type="MyCompany.Positions.ValidationStatus" Nullable="false" />
        <Property Name="InstrumentTypeId" Type="Edm.Guid" Nullable="false" />
      </EntityType>
      <EntityType Name="Feed">
        <Key>
          <PropertyRef Name="Name" />
        </Key>
        <Property Name="Name" Type="Edm.String" Nullable="false" />
        <NavigationProperty Name="Deliveries" Type="Collection(MyCompany.Api.OData.Delivery)" />
      </EntityType>
      <EntityType Name="Delivery">
        <Key>
          <PropertyRef Name="ReferenceDate" />
        </Key>
        <Property Name="ReferenceDate" Type="Edm.DateTimeOffset" Nullable="false" />
        <NavigationProperty Name="Positions" Type="Collection(MyCompany.Api.OData.Position)" />
      </EntityType>
    </Schema>
    <Schema Namespace="MyCompany.Positions" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EnumType Name="ValidationStatus">
        <Member Name="Invalid" Value="0" />
        <Member Name="Valid" Value="1" />
        <Member Name="Expired" Value="2" />
      </EnumType>
    </Schema>
    <Schema Namespace="Default" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <EntityContainer Name="Container">
        <EntitySet Name="Positions" EntityType="MyCompany.Api.OData.Position" />
        <EntitySet Name="Feeds" EntityType="MyCompany.Api.OData.Feed">
          <NavigationPropertyBinding Path="Deliveries" Target="Deliveries" />
        </EntitySet>
        <EntitySet Name="Deliveries" EntityType="MyCompany.Api.OData.Delivery">
          <NavigationPropertyBinding Path="Positions" Target="Positions" />
        </EntitySet>
      </EntityContainer>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>

编辑

在“选项”下的电源查询功能区中启用诊断后,我看到以下警告:

DataMashup.Trace Warning: 24579 : {"Start":"2015-05-26T18:26:53.5539195Z","Action":"Engine/IO/OData/Create","ServiceUri":"http://localhost:54026/.../odata/v4","RequestUrl":"http://localhost:54026/.../odata/v4","RequestHeaders":"null","Exception":"Exception:\r\nExceptionType: Microsoft.Mashup.Engine1.Runtime.ValueException, Microsoft.Mashup.Engine.1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\r\nMessage: [DataSource.Error] OData: The feed's metadata document appears to be invalid.\r\nStackTrace:\n   at Microsoft.Mashup.Engine1.Library.OData.EdmModelProcessorBase`1.Build()\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.ODataEnvironment.Create(ServiceDocumentWrapper serviceDoc, Uri metadataUri, Value headers, String resourceKind, ResourceCredentialCollection credentials, IEngineHost host, ODataSettings settings, ODataUserSettings userSettings, Boolean useCachedCredentials)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.ODataResponse.Create(Uri requestUri, HttpResponseData responseData, String resourceKind, Value headers, ResourceCredentialCollection credentials, IEngineHost host, ODataSettings settings, ODataUserSettings userSettings)\r\n   at Microsoft.Mashup.Engine1.Library.OData.ODataModule.GetFeed(String resourceKind, TextValue serviceUriValue, TextValue uriValue, Value headers, IEngineHost host, ResourceCredentialCollection credentials, ODataSettingsBase settings, ODataUserSettings userSettings, Boolean useCachedCredentials)\r\n\r\nInnerException\r\nException:\r\nExceptionType: System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\r\nMessage: Operation is not valid due to the current state of the object.\r\nStackTrace:\n   at Microsoft.Mashup.Engine1.Library.OData.V4.ODataTypeServices.GetTypeValueFromEdm(EdmPrimitiveTypeKind typeKind)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetTypeValue(IEdmType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(Stack`1 processingTypes, IEdmType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreatePropertyTypeValue(Stack`1 processingTypes, IEdmProperty property)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.CreateRecordTypeValue(Stack`1 processingTypes, IEdmStructuredType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(Stack`1 processingTypes, IEdmType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.ProcessTypes()\r\n   at Microsoft.Mashup.Engine1.Library.OData.EdmModelProcessorBase`1.Build()\r\n\r\n\r\n\r\n\r\n","ProductVersion":"2.22.4007.242 (Release-V2-Public)","ActivityId":"22edde60-34b3-49eb-8dda-75507d00be29","Process":"Microsoft.Mashup.Container.NetFX40","Pid":6244,"Tid":1,"Duration":"00:00:00.2893059"}
DataMashup.Trace Warning: 24579 : {"Start":"2015-05-26T18:26:53.8596010Z","Action":"SimpleDocumentEvaluator/BeginGetResult<IPreviewValueSource>/callback","Exception":"Exception:\r\nExceptionType: Microsoft.Mashup.Engine1.Runtime.ValueException, Microsoft.Mashup.Engine.1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\r\nMessage: [DataSource.Error] OData: The feed's metadata document appears to be invalid.\r\nStackTrace:\n   at Microsoft.Mashup.Evaluator.Interface.EvaluationResult2`1.get_Result()\r\n   at Microsoft.Mashup.Evaluator.SimpleDocumentEvaluator.<>c__DisplayClass1.<BeginGetResult>b__0(EvaluationResult2`1 result)\r\n\r\nInnerException\r\nException:\r\nExceptionType: System.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\r\nMessage: Operation is not valid due to the current state of the object.\r\nStackTrace:\n   at Microsoft.Mashup.Engine1.Library.OData.V4.ODataTypeServices.GetTypeValueFromEdm(EdmPrimitiveTypeKind typeKind)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetTypeValue(IEdmType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(Stack`1 processingTypes, IEdmType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreatePropertyTypeValue(Stack`1 processingTypes, IEdmProperty property)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.CreateRecordTypeValue(Stack`1 processingTypes, IEdmStructuredType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(Stack`1 processingTypes, IEdmType type)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.ProcessTypes()\r\n   at Microsoft.Mashup.Engine1.Library.OData.EdmModelProcessorBase`1.Build()\r\n\r\n\r\n\r\n\r\n","ProductVersion":"2.22.4007.242 (Release-V2-Public)","ActivityId":"22edde60-34b3-49eb-8dda-75507d00be29","Process":"Microsoft.Mashup.Container.NetFX40","Pid":6244,"Tid":1,"Duration":"00:00:00.0040547"}
DataMashup.Trace Warning: 24579 : {"Start":"2015-05-26T18:26:53.2420994Z","Action":"SimpleDocumentEvaluator/BeginGetResult<IValue>","Exception":"Exception:\r\nExceptionType: Microsoft.Mashup.Engine1.Runtime.ValueException, Microsoft.Mashup.Engine.1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\r\nMessage: [DataSource.Error] OData: The feed's metadata document appears to be invalid.\r\nStackTrace:\n   at Microsoft.Mashup.Engine1.Library.OData.EdmModelProcessorBase`1.Build()\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.ODataEnvironment.Create(ServiceDocumentWrapper serviceDoc, Uri metadataUri, Value headers, String resourceKind, ResourceCredentialCollection credentials, IEngineHost host, ODataSettings settings, ODataUserSettings userSettings, Boolean useCachedCredentials)\r\n   at Microsoft.Mashup.Engine1.Library.OData.V4.ODataResponse.Create(Uri requestUri, HttpResponseData responseData, String resourceKind, Value headers, ResourceCredentialCollection credentials, IEngineHost host, ODataSettings settings, ODataUserSettings userSettings)\r\n   at Microsoft.Mashup.Engine1.Library.OData.ODataModule.GetFeed(String resourceKind, TextValue serviceUriValue, TextValue uriValue, Value headers, IEngineHost host, ResourceCredentialCollection credentials, ODataSettingsBase settings, ODataUserSettings userSettings, Boolean useCachedCredentials)\r\n   at Microsoft.Mashup.Engine1.Library.OData.ODataModule.GetFeed(String resourceKind, TextValue serviceUri, Value headers, Value options, IEngineHost host, Boolean isPrivileged)\r\n   at Microsoft.Mashup.Engine1.Library.OData.ODataModule.FeedFunctionValue.TypedInvoke(TextValue serviceUri, Value headers, Value options)\r\n   at Microsoft.Mashup.Engine1.Runtime.NativeFunctionValue3`4.Invoke(Value arg0, Value arg1, Value arg2)\r\n   at Microsoft.Mashup.Engine1.Runtime.NativeFunctionValue3`4.Invoke(Value arg0)\r\n   at Microsoft.Mashup.Engine1.Runtime.FunctionValue.MetaTypeFunctionValue.Invoke(Value arg0)\r\n   at Microsoft.Mashup.Engine1.Runtime.SerializationApplyingModule.SerializableFunctionValue.Invoke(Value arg0)\r\n   at Microsoft.Mashup.Engine1.Language.FunctionInvocationExpression1.Execute(Value frame)\r\n   at Microsoft.Mashup.Engine1.Language.DebugExpression.Execute(Value frame)\r\n   at Microsoft.Mashup.Engine1.Language.FunctionInvocationExpression2.Execute(Value frame)\r\n   at Microsoft.Mashup.Engine1.Language.DebugExpression.Execute(Value frame)\r\n   at Microsoft.Mashup.Engine1.Language.RuntimeFunctionValue1.Invoke(Value arg0)\r\n   at Microsoft.Mashup.Engine1.Language.RecordExpression.RuntimeRecordValue.Force(Int32 index)\r\n   at Microsoft.Mashup.Engine1.Language.RecordExpression.RuntimeRecordValue.get_Item(Int32 index)\r\n   at Microsoft.Mashup.Engine1.Runtime.RecordValue.get_Item(String field)\r\n   at Microsoft.Mashup.Engine1.Language.FieldAccessExpression.Execute(Value frame)\r\n   at Microsoft.Mashup.Engine1.Language.RuntimeFunctionValue1.Invoke(Value arg0)\r\n   at Microsoft.Mashup.Engine1.Language.RecordExpression.RuntimeRecordValue.Force(Int32 index)\r\n   at Microsoft.Mashup.Engine1.Language.RecordExpression.RuntimeRecordValue.get_Item(Int32 index)\r\n   at Microsoft.Mashup.Engine1.Runtime.RecordValue.get_Item(Value key)\r\n   at Microsoft.Mashup.Engine1.Runtime.Library.Linker.BindFunctionValue.TypedInvoke(RecordValue environment, Value section, TextValue name)\r\n   at Microsoft.Mashup.Engine1.Runtime.NativeFunctionValue3`4.Invoke(Value arg0, Value arg1, Value arg2)\r\n   at Microsoft.Mashup.Engine1.Runtime.FunctionValue.Invoke(Value[] args)\r\n   at Microsoft.Mashup.Engine1.Language.ExpressionInvocationExpression.Execute(MembersFrame0& frame)\r\n   at Microsoft.Mashup.Engine1.Language.MembersFunctionValue0.Invoke()\r\n   at Microsoft.Mashup.Engine1.Language.ListExpression.RuntimeListValue.Force(Int32 index)\r\n   at Microsoft.Mashup.Engine1.Language.ListExpression.RuntimeListValue.get_Item(Int32 index)\r\n   at Microsoft.Mashup.Engine1.Runtime.ListValue.get_Item(Value key)\r\n   at Microsoft.Mashup.Engine1.Runtime.Library.List.ElementWithListCheckFunctionValue.Invoke(Value collection, Value key)\r\n   at Microsoft.Mashup.Engine1.Language.FunctionInvocationExpression2.Execute(MembersFrame1& frame)\r\n   at Microsoft.Mashup.Engine1.Language.MembersFunctionV","ProductVersion":"2.22.4007.242 (Release-V2-Public)","ActivityId":"22edde60-34b3-49eb-8dda-75507d00be29","Process":"Microsoft.Mashup.Container.NetFX40","Pid":6244,"Tid":1,"Duration":"00:00:00.6215902"}
DataMashup.Trace警告:24579:{“开始”:“2015-05-26T18:26:53.5539195Z”,“操作”:“引擎/IO/OData/Create”,“服务URI”:”http://localhost:54026/.../odata/v4,“请求URL”:http://localhost:54026/.../odata/v4,“RequestHeaders”:“null”,“异常”:异常:\r\nExceptionType:Microsoft.Mashup.Engine1.Runtime.ValueException,Microsoft.Mashup.Engine.1,版本=1.0.0.0,区域性=neutral,PublicKeyToken=31bf3856ad364e35\r\n消息:[DataSource.Error]OData:源的元数据文档似乎无效。\r\n堆栈跟踪:\n位于Microsoft.Mashup.Engine1.Library.OData.EdmModelProcessorBase`1.Build()\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.ODataEnvironment.Create(ServiceDocumentWrapper serviceDoc、Uri metadataUri、值标题、字符串resourceKind、ResourceCredentialCollection凭据、IEngineHost主机、ODataSettings设置、ODataUserSettings用户设置、布尔useCachedCredentials)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.ODataResponse.Create(Uri requestUri、HttpResponseData responseData、String resourceKind、值标题、ResourceCredentialCollection凭据、IEEngineHost主机、ODataSettings设置、ODataUserSettings用户设置)\r\n位于Microsoft.Mashup.Engine1.Library.OData.ODataModule.GetFeed(字符串resourceKind、TextValue serviceUriValue、TextValue uriValue、值标题、IEngineHost主机、ResourceCredentialCollection凭据、ODataSettingsBase设置、ODataUserSettings用户设置、布尔useCachedCredentials)\r\n\r\nInnerException\r\nException:\r\nExceptionType:System.InvalidOperationException,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089\r\n消息:由于对象的当前状态,操作无效。\r\n堆栈跟踪:\n位于Microsoft.Mashup.Engine1.Library.OData.V4.ODataTypeServices.GetTypeValueFromEdm(EdmPrimitiveTypeKind)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetTypeValue(IEdmType类型)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(堆栈'1 processingTypes,IEdmType类型)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreatePropertyTypeValue(堆栈'1 processingTypes,IEdmProperty属性)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.CreateRecordTypeValue(堆栈'1 processingTypes,IEdmStructuredType类型)\r\n在Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(堆栈'1处理类型,IEdmType类型)\r\n在Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.ProcessTypes()\r\n在Microsoft.Mashup.Engine1.Library.OData.EdmModelProcessorBase'1.Build()\r\n\r\r\n\r\n\r\n\r\n\r\n,“产品版本”:“2.22.4007.242”“活动ID”:“22edde60-34b3-49eb-8dda-75507d00be29”,“流程”:“Microsoft.Mashup.Container.NetFX40”,“Pid”:6244,“Tid”:1,“持续时间”:“00:00:00.2893059”}
DataMashup.Trace警告:24579:{“开始”:“2015-05-26T18:26:53.8596010Z”,“操作”:“SimpleDocumentEvaluator/BeginGetResult/callback”,“异常”:“异常:\r\nExceptionType:Microsoft.Mashup.Engine1.Runtime.ValueException,Microsoft.Mashup.Engine.1,版本=1.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35\r\n消息:[-DataSource.Error]OData:提要的元数据文档似乎无效。\r\n堆栈跟踪:\n位于Microsoft.Mashup.Evaluator.Interface.EvaluationResult2`1.get_Result()\r\n位于Microsoft.Mashup.Evaluator.SimpleDocumentEvaluator.c_uDisplayClass1.b_u0(EvaluationResult2`1结果)\r\n\r\nInnerException\r\nException:\r\nExceptionType:System.InvalidOperationException,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089\r\n消息:由于对象的当前状态,操作无效。\r\n堆栈跟踪:\n位于Microsoft.Mashup.Engine1.Library.OData.V4.ODataTypeServices.GetTypeValueFromEdm(EdmPrimitiveTypeKind)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetTypeValue(IEdmType类型)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(堆栈'1 processingTypes,IEdmType类型)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreatePropertyTypeValue(堆栈'1 processingTypes,IEdmProperty属性)\r\n位于Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.CreateRecordTypeValue(堆栈'1 processingTypes,IEdmStructuredType类型)\r\n在Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.GetOrCreateTypeValue(堆栈'1处理类型,IEdmType类型)\r\n在Microsoft.Mashup.Engine1.Library.OData.V4.EdmModelProcessor.ProcessTypes()\r\n在Microsoft.Mashup.Engine1.Library.OData.EdmModelProcessorBase'1.Build()\r\n\r\r\n\r\n\r\n\r\n\r\n,“产品版本”:“2.22.4007.242”“活动ID”:“22edde60-34b3-49eb-8dda-75507d00be29”,“流程”:“Microsoft.Mashup.Container.NetFX40”,“Pid”:6244,“Tid”:1,“持续时间”:“00:00:00.0040547”}
D