有没有办法处理 asp.net core odata 错误?
我有一个DimDateAvailable具有一个属性的模型类,主键为int DateId,我拨打了类似/data/DimDateAvailable?$select=test.
其他调用按预期工作并返回我所追求的 - 这是一个故意生成错误的调用,它失败是因为模型上没有名为 test 的属性。响应按预期返回,如下所示:{"error":{"code":"","message":"The query specified in the URI is not valid. Could not find a property named 'test' on type 'DimDateAvailable'...后跟堆栈跟踪。
这种反应是正常,当env.IsDevelopment()是true,但我不希望暴露堆栈跟踪时,没有发展。
我已经看过在gettry-catch中将代码包装在控制器的方法中,但我认为有一个操作过滤器在结果上运行,因此它永远不会被调用。另一方面,我看不到在哪里注入任何中间件和/或添加任何过滤器来捕获错误。我怀疑可能有一种方法可以覆盖输出格式化程序来实现我想要的,但我看不到如何。
这是我目前所拥有的:
在 Startup.cs 中:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<TelemetryDbContext>();
services.AddOData();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc(routeBuilder =>
{
routeBuilder.MapODataServiceRoute("odata", "data", GetEdmModel());
routeBuilder.Select().Expand().Filter().OrderBy().MaxTop(null).Count();
// insert …Run Code Online (Sandbox Code Playgroud) 我正在使用MiniProfiler用于asp.net web api站点,该站点的帮助页面具有mvc方面.
我试图描述其中一个api方法,这在我的本地机器上是成功的,但是当我部署到我的测试服务器(win2008r2/IIS 7.5)时,我能够浏览到/mini-profiler-resources/results,但页面是空白的,因为我得到了404上includes.js
我一直在审查这里的答案,其中讨论了添加条目<system.webServer><handlers>和/或添加<system.webServer><modules runAllManagedModulesForAllRequests="true"/>,在我的案例中没有一个是成功的.
这是我的global.asax中的相关代码.我不确定是否MiniProfilerHandler.RegisterRoutes()有必要:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
AutofacConfig.Register(GlobalConfiguration.Configuration);
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
FluentValidationConfig.RegisterForWebApi(GlobalConfiguration.Configuration);
MiniProfilerHandler.RegisterRoutes();
MiniProfilerEF6.Initialize();
Database.SetInitializer<OasisIntegrationEntities>(null);
// UseMiniProfilerUi(object) returns true.
MiniProfiler.Settings.Results_Authorize = UseMiniProfilerUi;
MiniProfiler.Settings.Results_List_Authorize = UseMiniProfilerUi;
}
Run Code Online (Sandbox Code Playgroud)
miniprofiler是不是打算在服务器上运行,还是我错过了什么?
好奇这个自引用代码如何有效或能够编译?
public class TestClass
{
public string TestProperty = nameof(TestProperty);
}
Run Code Online (Sandbox Code Playgroud)