【发布时间】:2015-03-20 15:30:35
【问题描述】:
我正在开发一个 WindowsPhone 8.1 应用程序,并且我有一个连接到托管在 Azure 网站上的 Web API 服务器的 SQL 数据库。最近,数据库人员更新了数据库,添加了一个新表,并将示例数据添加到还没有的表中。通过 Azure 管理数据库时,我可以看到所有表中都有数据,但是当我尝试使用 /api/entityname url 检索它们时,它会返回一条错误消息。
有几点需要注意,服务器连接的数据库自从我最初发布它以来已经发生了变化。我尝试再次运行启用迁移和更新数据库命令,但我不知道如何选择它现在连接的新数据库。我需要重新发布服务器吗?为新数据库运行迁移命令?我很犹豫是否要自己尝试涉及数据库连接的事情,因为我对此了解不多,也不想弄乱任何配置。我有一个 .NET 后端。提前感谢您的帮助。
更新:
我进入了我的 Services 项目的 Web.Config 文件,并将连接字符串中的目录值更改为我的新数据库的名称。现在,当我尝试使用 /api/teams 扩展名获取游戏值时出现以下错误:
发生了错误。 'ObjectContent
1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.</ExceptionMessage><ExceptionType>System.InvalidOperationException</ExceptionType><StackTrace/><InnerException><Message>An error has occurred.</Message><ExceptionMessage>The 'GameTime' property on 'Game' could not be set to a 'System.TimeSpan' value. You must set this property to a non-null value of type 'System.Byte[]'. </ExceptionMessage><ExceptionType>System.InvalidOperationException</ExceptionType><StackTrace> at System.Data.Entity.Core.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader1.GetValue(DbDataReader 阅读器,Int32 序数)在 System.Data.Entity.Core.Common.Internal.Materialization.Shaper.GetPropertyValueWithErrorHandling[TProperty](Int32 序数,字符串属性名称,字符串类型名称)在 lambda_method(闭包,Shaper)在 System.Data.Entity.Core.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)1.ReadNextElement(Shaper 整形器)在 System.Data.Entity.Core.Common.Internal.Materialization.Shaper
at lambda_method(Closure , Shaper ) at System.Data.Entity.Core.Common.Internal.Materialization.Coordinator1.SimpleEnumerator.MoveNext() at System.Data.Entity.Internal.LazyEnumerator1.MoveNext() 在 WriteArrayOfGameToXml(XmlWriterDelegator,对象, XmlObjectSerializerWriteContext , CollectionDataContract )在 System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter,对象 obj,XmlObjectSerializerWriteContext 上下文)在 System.Runtime.Serialization.XmlObjectSerializerWriteContext.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, 对象 obj, RuntimeTypeHandle 声明的TypeHandle) 在 System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, 对象 obj, RuntimeTypeHandle 声明的TypeHandle) 在 System.Runtime.Serialization.DataContractSerializer.InternalWriteObjectContent(XmlWriterDelegator 作家,对象图,DataContractResolver dataContractResolver)在 System.Runtime.Serialization.DataContractSerializer.InternalWriteObject(XmlWriterDelegator 作家,对象图,DataContractResolver dataContractResolver)在 System.Runtime.Serialization.XmlObjectSerializer.WriteObjectHandleExceptions(XmlWriterDelegator 作家,对象图,DataContractResolver dataContractResolver)在 System.Runtime.Serialization.DataContractSerializer.WriteObject(XmlWriter 作家,对象图)在 System.Net.Http.Formatting.XmlMediaTypeFormatter.WriteToStream(类型 类型、对象值、流 writeStream、HttpContent 内容)在 System.Net.Http.Formatting.XmlMediaTypeFormatter.WriteToStreamAsync(类型 类型、对象值、流 writeStream、HttpContent 内容、 TransportContext transportContext, CancellationToken 取消令牌) --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()
在 System.Web.Http.WebHost.HttpControllerHandler.d__1b.MoveNext()
我认为我正在取得一些进展,但我在将应用程序连接到数据库方面并不是很有经验,所以我犹豫是否要四处寻找。在此先感谢您的帮助。我正在使用数据优先迁移(数据库中的 EF 设计器)。此外,仅当我通过 localhost 在本地运行服务时,才会显示上述错误消息。当我通过它托管的 azurewebsites url 运行它时,我得到以下信息:
发生错误。
我认为这是因为我的数据库更新没有发布到托管站点,对吗?我使用 Firefox 作为我的浏览器。如果我使用 IE,我无法下载或打开新实体的 JSON 文件。
【问题讨论】:
标签: azure asp.net-web-api2 database-migration