Web api 在本地工作但部署到 Azure 时不工作

Web api working locally but not when deployed to Azure

我有一个我开发的 Web Api,它在本地 运行 时工作得很好,但是当我在 Azure 上发布它时,我得到一个 500 Internal Sever Error.

我在数据库中有 3 个表 - "Messages"、"Users"、"Conversations"

只有当我调用 "Conversations" 或 "Users" 时才会发生错误。 (对话包含用户列表,用户包含对话列表。)

我不确定是什么原因造成的,我不知道如何从这个错误中获取更多信息。

我试过更改 entity framework 连接字符串,尽管我并不知道我在用它做什么。我的 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" />

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True" />
  </parameters>
</defaultConnectionFactory>
<providers>
  <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>

不调试很难说是什么错误

您可以使用任何记录器,如 log4net 或 sirilog,然后记录 return HTTP 500 或您可以 live debug your code in azure.

的操作或方法中的错误

此外,如果整个网络 API 应用程序没有 运行(returns 内部服务器错误),这似乎是一个配置错误(例如错误的 ConnectionString)但是如果您的某些操作 returns 200 而其他操作 returns 500 您应该调试您的代码或记录您的错误以了解确切的例外情况。

我刚刚找到了解决办法! 我在做:

public IQueryable<Conversation> GetConversations()
{
    return db.Conversations;
}

这一定是导致序列化问题的原因,因为它在更改为时有效:

public IEnumerable<Conversation> GetConversations()
{
    return db.Conversations.ToList();
}

在这么小的事情上浪费了好几天!