我有一个OData服务,它由几个使用ODataController的MVC控制器实现。除了一个控制器之外,其他所有控制器都有问题,其中一个内部500个错误正在返回,没有任何帮助的在返回语句之后:
/// <summary><see cref="ODataController" /> reacting to queries relating to <see cref="Contract" /></summary>
[CustomExceptionFilter]
public class ContractsController : ODataController
{
// GET: odata/Contracts
[EnableQuery]
public IQueryable<Contract> GetContracts()
{
return DataAccess.GetContracts();
}
... other methods
}
/// <summary>Single point of reference to access data</summary>
public static class DataAccess
{
/// <summary>Gets the queryable collection of <see cref="ContractCoverageDetail" /></summary>
/// <returns>The queryable collection of <see cref="ContractCoverageDetail" /></returns>
public static IQueryable<Contract> GetContracts()
{
IQueryable<Contract> results = null;
using (EntityFrameworkContext context = new EntityFrameworkContext())
results = context.Contracts.ToArray().AsQueryable();
return results;
}
}使用相同DataAccess类的另一个控制器返回的数据很好。为彼此的控制器返回的所有内容是:
<m:error xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<m:code/>
<m:message xml:lang="en-US">An error has occurred.</m:message>
</m:error>该错误似乎是在我的返回语句之后引发的,如果在返回(F10)之后执行,则会击中集合返回实体上的每个单独的{ get;}属性,然后将带有上述错误的结果返回给浏览器。我无法获得实际的错误信息(内部错误)为我的生命,这是奇怪的是,一个控制器正在工作,而其余的失败,没有任何细节。
有人知道导致这种情况的原因吗,或者在返回语句之后如何打开错误细节?
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;在global.asax.cs中,无论是在web.config中还是在web.config中都没有帮助:
<system.web>
<customErrors allowNestedErrors="true" mode="On" />
</system.web>
<system.webServer>
<httpErrors existingResponse="PassThrough" />
</system.webServer>你知道我怎么才能得到实际的异常吗?
发布于 2015-09-09 01:06:23
下面是关于如何调试Web和ODL的简单指南。
http://odata.github.io/WebApi/10-01-debug-webapi-source/
发布于 2015-09-09 00:18:47
很难确切地说出这个问题的原因,但是这里有几件你可以尝试的事情。希望其中之一能为您提供更多关于您的异常的信息。
调试所有代码
这可能看起来很明显,但请确保您不是只调试代码。您可以通过访问调试->选项和设置下的调试选项来检查.菜单。确保没有选中“仅启用我的代码”。通常情况下可能没问题。当出现异常错误时,您似乎无法得到它们,有时这种设置可能会使您陷入困境。
调试异常
另一件既有用又痛苦的事情是调试->异常.设置。这些异常集可以配置为使Visual自动中断,从而使您能够看到它们正在移动的部分。对于调试MVC和.NET,通常需要启用公共语言运行时异常。
打开调试异常后,您可能会得到大量您不想要的异常。只需忽略它们并继续运行,直到找到与oData相关的异常。
https://stackoverflow.com/questions/32468699
复制相似问题