OData API не может загрузить указанный ресурс метаданных / MetaDataException - PullRequest
0 голосов
/ 14 июня 2019

Я работаю над API, который должен предоставлять данные из базы данных SQL Server. Все работает, когда я запрашиваю метаданные через Почтальон, результат верный, но когда я хочу показать таблицу базы данных или значения строки в одной из таблиц, я получаю огромное сообщение об ошибке, которое выглядит так:

{
"error": {
    "code": "",
    "message": "An error has occurred.",
    "innererror": {
        "message": "Fehler des Typs \"ObjectContent`1\" beim Serialisieren des Antworttexts für den Inhaltstyp \"application/json; odata.metadata=minimal\".",
        "type": "System.InvalidOperationException",
        "stacktrace": "",
        "internalexception": {
            "message": "Angeforderte Metadatenressource kann nicht geladen werden.",
            "type": "System.Data.Entity.Core.MetadataException",
            "stacktrace": "   bei System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources(String assemblyName, String resourceName, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)\r\n   bei System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)\r\n   bei System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)\r\n   bei System.Data.Entity.Core.Metadata.Edm.MetadataCache.SplitPaths(String paths)\r\n   bei System.Data.Entity.Core.Common.Utils.Memoizer`2.<>c__DisplayClass2.<Evaluate>b__0()\r\n   bei System.Data.Entity.Core.Common.Utils.Memoizer`2.Result.GetValue()\r\n   bei System.Data.Entity.Core.Common.Utils.Memoizer`2.Evaluate(TArg arg)\r\n   bei System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetArtifactLoader(DbConnectionOptions effectiveConnectionOptions)\r\n   bei System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetMetadataWorkspace(DbConnectionOptions effectiveConnectionOptions)\r\n   bei System.Data.Entity.Core.EntityClient.EntityConnection.GetMetadataWorkspace()\r\n   bei System.Data.Entity.Core.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection()\r\n   bei System.Data.Entity.Core.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor, ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, Translator translator, ColumnMapFactory columnMapFactory)\r\n   bei System.Data.Entity.Internal.InternalConnection.CreateObjectContextFromConnectionModel()\r\n   bei System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel()\r\n   bei System.Data.Entity.Internal.LazyInternalContext.InitializeContext()\r\n   bei System.Data.Entity.Internal.InternalContext.Initialize()\r\n   bei System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)\r\n   bei System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()\r\n   bei System.Data.Entity.Internal.Linq.InternalSet`1.GetEnumerator()\r\n   bei System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.IEnumerable.GetEnumerator()\r\n   bei Microsoft.AspNet.OData.Formatter.Serialization.ODataResourceSetSerializer.WriteResourceSet(IEnumerable enumerable, IEdmTypeReference resourceSetType, ODataWriter writer, ODataSerializerContext writeContext)\r\n   bei Microsoft.AspNet.OData.Formatter.Serialization.ODataResourceSetSerializer.WriteObjectInline(Object graph, IEdmTypeReference expectedType, ODataWriter writer, ODataSerializerContext writeContext)\r\n   bei Microsoft.AspNet.OData.Formatter.Serialization.ODataResourceSetSerializer.WriteObject(Object graph, Type type, ODataMessageWriter messageWriter, ODataSerializerContext writeContext)\r\n   bei Microsoft.AspNet.OData.Formatter.ODataOutputFormatterHelper.WriteToStream(Type type, Object value, IEdmModel model, ODataVersion version, Uri baseAddress, MediaTypeHeaderValue contentType, IWebApiUrlHelper internaUrlHelper, IWebApiRequestMessage internalRequest, IWebApiHeaders internalRequestHeaders, Func`2 getODataMessageWrapper, Func`2 getEdmTypeSerializer, Func`2 getODataPayloadSerializer, Func`1 getODataSerializerContext)\r\n   bei Microsoft.AspNet.OData.Formatter.ODataMediaTypeFormatter.WriteToStreamAsync(Type type, Object value, Stream writeStream, HttpContent content, TransportContext transportContext, CancellationToken cancellationToken)\r\n--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   bei System.Web.Http.WebHost.HttpControllerHandler.<WriteBufferedResponseContentAsync>d__22.MoveNext()"
        }
    }
}

}

Извините, я знаю, что это по-немецки, но в основном говорится, что существует исключение MetadataException и что запрошенный ресурс MetaData не может быть загружен.

Из того, что я исследовал и нашел до сих пор, это означает, что есть проблема с моей строкой соединения, но я попробовал 1001 различные исправления, которые я нашел в Интернете, и ни одно из них, казалось, не работало.

Я был бы очень рад, если бы кто-то мог взглянуть на мою строку соединения внизу и сказать мне, если что-то не так с ней, и если нет, то что еще может вызвать эту ошибку ... попробуйте объяснить это легко, пока я новичок:)

Моя строка подключения:

<add name="modul335" connectionString="metadata=res://*/Models.Database.csdl|res://*/Models.Database.ssdl|res://*/Models.Database.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=LAPTOP-ST7EUDF4\SQLEXPRESS;initial catalog=modul335;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

1 Ответ

0 голосов
/ 15 июня 2019

Итак, я наконец-то исправил проблему, и это было удивительно легко: я изменил «Вы пытались выключить и снова включить?»и удалил мои модели, а затем добавил их снова.и вуаля, все работает отлично, я думаю:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...