【问题标题】:Web api working locally but not when deployed to AzureWeb api 在本地工作,但在部署到 Azure 时不工作
【发布时间】:2016-06-20 02:34:14
【问题描述】:

我开发了一个 Web Api,它在本地运行时运行良好,但是当我在 Azure 上发布它时,我得到一个 500 Internal Sever Error

我在数据库中有 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 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>

【问题讨论】:

    标签: c# ef-code-first entity-framework-6 asp.net-web-api2 azure-sql-database


    【解决方案1】:

    不调试很难说是什么错误。

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

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

    【讨论】:

    • 感谢您的意见!原来我需要以列表形式返回我的数据,而不是作为 db 对象。似乎已经解决了问题!
    【解决方案2】:

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

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

    这一定是导致序列化问题,因为它在更改为时可以工作:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-15
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2018-12-31
      • 2021-05-22
      相关资源
      最近更新 更多