4

我有一个Web Api,我已经开发了在本地运行时完美运行的Web Api,但是当我在Azure上发布它时,我得到500 Internal Sever ErrorWeb api在本地工作,但部署到Azure时不工作

我在数据库中有3个表 - “消息”,“用户”,“对话”

错误只有当我拨打电话恰巧“对话”或“用户”。 (对话包含用户和用户列表,包含会话列表。)

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

我试图改变实体框架连接字符串,虽然我真的不知道我在做什么。我的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 [email protected];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 [email protected];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> 

回答

0

我刚刚找到解决方案! 我做:

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

,因为它的工作原理这一定是导致系列化问题时改为:

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

夫妇浪费在这么小的东西的天!

3

很难说什么是无需调试错误。

您可以使用log4net或sirilog等任何记录器,然后在返回HTTP 500的操作或方法中记录错误,或者您可以在live debug your code in azure中记录错误。

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

+0

谢谢您的输入!原来我需要以列表形式返回数据,而不是数据库对象..似乎已经修复了问题! – semiColon

相关问题