Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# Web api在本地工作,但部署到Azure时不工作_C#_Ef Code First_Entity Framework 6_Asp.net Web Api2_Azure Sql Database - Fatal编程技术网

C# 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

我开发了一个Web Api,在本地运行时效果非常好,但是当我在Azure上发布它时,我得到一个
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();
}