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();
}
在这么小的事情上浪费了好几天!
我有一个我开发的 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();
}
在这么小的事情上浪费了好几天!