C# Web api在本地工作,但部署到Azure时不工作
我开发了一个Web Api,在本地运行时效果非常好,但是当我在Azure上发布它时,我得到一个C# Web api在本地工作,但部署到Azure时不工作,c#,ef-code-first,entity-framework-6,asp.net-web-api2,azure-sql-database,C#,Ef Code First,Entity Framework 6,Asp.net Web Api2,Azure Sql Database,我开发了一个Web Api,在本地运行时效果非常好,但是当我在Azure上发布它时,我得到一个500内部服务器错误 数据库中有3个表-“消息”、“用户”、“对话” 只有当我打电话给“对话”或“用户”时,错误才会发生。 (对话包含用户列表,用户包含对话列表。) 我不确定是什么原因导致了这个错误,我不知道如何从这个错误中获得更多信息 我尝试过更改实体框架连接字符串,尽管我不知道我在用它做什么。my web.config中的其他连接字符串似乎没有问题 这是数据库问题还是代码优先问题 Web.confg
500内部服务器错误
数据库中有3个表-“消息”、“用户”、“对话”
只有当我打电话给“对话”或“用户”时,错误才会发生。
(对话包含用户列表,用户包含对话列表。)
我不确定是什么原因导致了这个错误,我不知道如何从这个错误中获得更多信息
我尝试过更改实体框架连接字符串,尽管我不知道我在用它做什么。my web.config中的其他连接字符串似乎没有问题
这是数据库问题还是代码优先问题
Web.confg:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=tcp:uqq5j22p7m.database.windows.net,1433;Initial Catalog=AA_db;Persist Security Info=True;User ID=KENH@uqq5j22p7m;Password=Password;Connect Timeout=30;Encrypt=True;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
<add name="AcademicAssistantContext" connectionString="Data Source=tcp:uqq5j22p7m.database.windows.net,1433;Initial Catalog=AA_db;Persist Security Info=True;User ID=KENH@uqq5j22p7m;Password=Password;Connect Timeout=30;Encrypt=True;MultipleActiveResultSets=True;"
providerName="System.Data.SqlClient" />
如果不进行调试,很难说是什么错误 您可以使用log4net或sirilog之类的任何记录器,然后在返回HTTP 500的操作或方法中记录错误,也可以这样做
另外,如果Overall web API应用程序没有运行(返回内部服务器错误),这似乎是一个配置错误(例如错误的ConnectionString),但是如果您的某些操作返回200,而其他操作返回500,您应该调试代码或记录错误,以了解确切的异常情况。我刚刚找到了一个解决方案! 我在做:
public IQueryable<Conversation> GetConversations()
{
return db.Conversations;
}
public IQueryable GetConversations()
{
返回db.Conversations;
}
这一定导致了序列化问题,因为它在更改为:
public IEnumerable<Conversation> GetConversations()
{
return db.Conversations.ToList();
}
public IEnumerable GetConversations()
{
返回db.Conversations.ToList();
}
在这么小的东西上浪费了几天 谢谢你的意见!事实证明,我需要以列表形式返回数据,而不是以db对象的形式返回数据。。似乎已经解决了这个问题!
public IEnumerable<Conversation> GetConversations()
{
return db.Conversations.ToList();
}