【问题标题】:asp.net web api internal server error 500asp.net web api 内部服务器错误 500
【发布时间】:2014-05-14 22:07:03
【问题描述】:

在我的本地服务器上它返回 json 但是当我将它发布到远程服务器时。我收到 500 内部服务器错误。

我无法在调试模式下运行托管站点,在本地主机上似乎很好。远程服务器是 IIS8.5 X-AspNet-Version: 4.0.30319 而我的本地 IIS 是 iis 8

html 响应是 500内部服务器错误。 您要查找的资源有问题,无法显示。

API 控制器

public class loginapiController : ApiController
{
    [System.Web.Http.HttpGet]
    public UserProjects UserProjects(int id)
    {
        return new UserProjects(id);
    }
}

public class UserProjects
{
    public IEnumerable<Project> Projects = new List<Project>();
    public List<Project> ExistingUserProjects = new List<Project>();
    public int UserId { get; set; }

    public UserProjects(int userId)
    {
        UserId = userId;
        var context = new AuditConnection();
        var existingProjectIds = context.UserProjects.Where(up => up.UserId == userId).Select(p => p.ProjectId);
        foreach (var id in existingProjectIds)
        {
            var project = context.Projects.Where(p => p.ProjectId == id).First();
            ExistingUserProjects.Add(project);
        }

        var proj = context.Projects.ToList();
        Projects = proj.Except(ExistingUserProjects);
    }
}

您可以使用此链接http://sentry.landsea.com.au/api/loginapi/UserProjects/4查看异常

【问题讨论】:

  • 你可以使用日志来定位问题,但我猜是连接字符串的问题。
  • 还有其他运行良好的操作。其他操作查询同一数据库。所以我猜连接字符串很好。我会看日志。谢谢你的建议。
  • 查看 Windows 事件日志以获取有关托管服务器上的错误的更多详细信息。 500 错误有 100 万个原因。可以是数据库,也可以是别的东西
  • 您可以在以下链接中看到异常 sentry.landsea.com.au/api/loginapi/UserProjects/4

标签: c# asp.net-web-api


【解决方案1】:

编辑:给出错误

“已经有一个打开的 DataReader 与此命令关联,必须先关闭。”

我相信this answer 会解释您的问题。您最好的选择是让您的阅读器在开始另一个命令之前完成第一个命令(您可以使用ToList() 执行此操作),或者将查询折叠为一个调用(我相信您可以通过将查询重构为一个使用SelectMany())。

请记住turning on MARS may be covering up a bigger problem,在你走这条路之前你应该完全理解它,特别是对于你的 DbContext 的生命周期范围的 Web 应用程序应该设置为单个 http 请求的生命周期。如果您正确地手动处理上下文或使用依赖注入框架,那么这样做是微不足道的。

【讨论】:

【解决方案2】:

对我来说,URL 显示了一条明确的错误消息:"Message":"There is already an open DataReader associated with this Command which must be closed first."您一次只能打开一个 DataReader,因此必须修复代码。

【讨论】:

    猜你喜欢
    • 2017-03-07
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多