我在visual studio 2015中使用实体框架创建了一个web api。数据库与api相链接。当我在visual studio中运行它时,一切正常,url返回一个json响应。但是,当我使用web deploy方法发布api并运行以下urlhttp://localhost/books/api/books/时,会得到一个错误:
{“消息”:“发生错误。”,“异常消息”:“objectcontent`1”类型未能序列化内容类型“application/json;charset=utf-8”的响应正文。”,“异常类型”:“system.invalidooperationexception”,“stacktrace”:null,“innerexception”:{“消息”:“发生错误。”,“ExceptionMessage”:“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到或无法访问服务器。请验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:50-发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅Windows应用程序事件日志。“,
“exceptionType”:“system.data.sqlclient.sqlexception”,“stacktrace”:“位于system.data.sqlclient.sqlinternalconnectionts..ctor(dbconnectionpoolidentity标识,sqlconnectionstring connectionoptions,sqlcredential凭据,object providerinfo,string newpassword,securestring newsecurepassword,boolean redirecteduserinstance,sqlconnectionstring userconnectionoptions,sessiondata reconnectsessiondata,dbconnection pool pool,string accesstoken,boolean applytransionfaulthandling\r\n位于system.data.sqlclient.sqlconnectionfactory.createconnection(dbconnection options options,dbconnection poolkey poolkey,object poolgroupproviderinfo,dbconnectionpool pool,dbconnection在system.data.providerbase.dbconnectionfactory.createpooledconnection(dbconnection pool pool,dbconnection owningobject,dbconnection options options options,dbconnection poolkey poolkey)上的owningconnection,dbconnectionoptions useroptions\r\n在system.data.providerbase.dbconnectionpool.createobject(dbconnection owningobject,dbconnectionoptions useroptions,dbconnectioninternal oldconnection)上的dbconnectionoptions useroptions\r\n在system.data.providerbase.dbconnectionpool.usercreaterequest(dbconnection owningobject,dbconnectionoptions useroptions,dbconnectioninternal oldconnection\r\n位于system.data.providerbase.dbconnectionpool.trygetconnection(dbconnection owningobject,uint32 waitformultipleobjectstimeout,boolean allowcreate,boolean onlyonetechconnection,dbconnectionoptions useroptions,dbconnectioninternal&connection)位于system.data.providerbase.dbconnectionpool.trygetconnection(dbconnection owningobject,taskcompletionsource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)\r\n at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 retry,dbconnectionoptions useroptions,dbconnectioninternal oldconnection,dbconnectioninternal&connection)位于system.data.providerbase.dbconnectioninternal.tryopenconnectioninternal(dbconnection outerconnection,dbconnectionfactory connectionfactory,taskcompletionsource1 retry, DbConnectionOptions userOptions)\r\n at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry)位于system.data.sqlclient.sqlconnection.tryopen(taskcompletionsource1 retry)\r\n at System.Data.SqlClient.SqlConnection.Open()\r\n at System.Data.Entity.Infrastructure.Interception.InternalDispatcher1.dispatch[ttarget,tinterceptioncontext](ttarget target,action2 operation, TInterceptionContext interceptionContext, Action3 executing,action3 executed)\r\n at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext)\r\n at System.Data.Entity.SqlServer.SqlProviderServices.<>c__DisplayClass33.<UsingConnection>b__32()\r\n at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()\r\n at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func1 operation)位于system.data.entity.sqlserver.sqlproviderservices.usingmasterconnection(dbconnection sqlconnection,action1 act)\r\n at System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable1 commandtimeout,dbconnection sqlconnection,字符串createdatabasescript\r\n位于system.data.entity.sqlserver.sqlproviderservices.dbcreatedatabase(dbconnection connection,在system.data.entity.internal.internal context.performitializationaction(action action)上可为空的1 commandTimeout, StoreItemCollection storeItemCollection)\r\n at System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection connection)\r\n at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)\r\n at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)\r\n at System.Data.Entity.MigrateDatabaseToLatestVersion2.initializedatabase(tcontext context)在system.data.entity.internal.internalcontext.performdatabaseinitialization()在system.data.entity.internal.retryaction1.PerformAction(TInput input)\r\n at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action1 action在system.data.entity.internal.internalcontext.getEntitySetandBaseTypeForType(类型EntityType)位于system.data.entity.internal.linq.internalSet1.Initialize()\r\n at System.Data.Entity.Internal.Linq.InternalSet1.getEnumerator()\r\n位于newtonsoft.json.serialization.jsonSerializerInternalWriter.serializeList(jsonWriter writer,IEnumerable values,jsonArrayContract contract,jsonProperty成员,jsonContainerContract CollectionContract,jsonProperty ContainerProperty位于newtonsoft.json.serialization.jsonSerializerInternalWriter.serialize(jsonWriter jsonWriter,对象值,类型objectType)处\r\n位于newtonsoft.json.jsonSerializer.serializeInternal(jsonWriter jsonWriter,对象值,在system.net.http.formatting.basejsonmediatypeformatter.writetostream(类型类型,对象值,流writestream,编码有效编码)处键入object type\r\n在system.net.http.formatting.jsonmediatypeformatter.writetostream(类型类型,对象值,流writestream,encoding effectiveencoding\r\n位于system.net.http.formatting.basejsonmediatypeformatter.writetostreamasync(类型类型、对象值、流writestream、http content content、transportcontext transportcontext,cancellationtoken cancellationtoken\r\n---从上一个引发异常的位置开始的堆栈跟踪结束---\r\n在system.runtime.compilerservices.taskawaiter.throwfornonsuccess(task task)在system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(task task task)在system.web.http.webhost.httpcontrollerhandler.d_u 1b.moveNext()“}
实际上,当使用visual studio应用程序指定的端口运行该应用程序时,使用相同的url时,url会给出json响应。请帮帮我。我是这方面的初学者。抱歉,如果有任何技术术语使用错误。

最佳答案

根据生产环境的不同,必须修改连接字符串。我想在发布时它仍然在寻找本地sql实例。请更改连接字符串并重试。

关于sql-server - 使用 Entity Framework 发布Web API时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38265744/

10-14 15:22
查看更多