如何处理和记录EntityFrameworkDataService应用程序中引发的异常

时间:2019-04-06 06:07:07

标签: vb.net wcf entity-framework-6 odata

这是我的第一个S.O.发布,因此请宽恕任何违反礼节的行为,并感谢大家的帮助。

我正在使用RESTful WCF EntityFrameworkDataService,实现IDataServiceEntityFrameworkworkProvider,并使用OData协议将数据库公开给客户端。

我的大部分经验是使用ASP.Net Web Forms应用程序,该应用程序具有带有Application_Error事件的Global.asax文件,该文件提供了插入SQL Server数据库中的有意义的错误信息。 (堆栈跟踪等)我想在数据服务中执行相同的操作,但是没有Global.asax文件。如何在此WCF数据服务中处理此事件(或等效事件)?

需求-我正在尝试帮助创建了使用数据服务的客户端应用程序的开发人员,他遇到了问题并报告了该服务,从而为他提供了来自数据服务的最小反馈。没有错误日志很难帮助他。

我意识到他遇到的许多(如果不是全部)问题可能不是应用程序异常,但是为了覆盖我的基础,我想至少捕获数据服务的应用程序异常,

在服务InitializeService事件中,我已将配置对象的UseVerboseErrors属性设置为“ true”,但这似乎是在提供客户端信息而不是我。

'This is my data service class, (DataService.svc,) with authentication removed, and other non-demonstrative methods.

Imports System
Imports System.Data.SqlClient
Imports System.Collections.Generic
Imports System.Data.Services
Imports System.Data.Services.Common
Imports System.Data.Services.Providers
Imports System.ServiceModel.Web
Imports System.Web
Imports System.Text
Imports System.Security.Principal
Imports Newtonsoft
Imports System.Data
Imports System.Data.Entity.Core
Imports System.Linq

<System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults:=True,
[Namespace]:="http://example.com/")>
<RM_API.JSONPSupportBehavior>
Partial Public Class DataService
    Inherits EntityFrameworkDataService(Of rmrsEntities)
    Implements IDataServiceEntityFrameworkProvider

    Public ReadOnly Property EdmSchemaVersion As MetadataEdmSchemaVersion Implements IDataServiceEntityFrameworkProvider.EdmSchemaVersion
        Get
            Return MetadataEdmSchemaVersion.Version3Dot0
        End Get
    End Property

    Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
        'Configuration.
        config.SetEntitySetAccessRule("*", EntitySetRights.All)
        config.DataServiceBehavior.AcceptAnyAllRequests = True
        config.SetServiceOperationAccessRule("*", ServiceOperationRights.All)
        config.SetServiceActionAccessRule("*", ServiceActionRights.Invoke)
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3
        config.DataServiceBehavior.AcceptProjectionRequests = True
        config.DataServiceBehavior.AcceptCountRequests = True
        'config.AnnotationsBuilder = CreateAnnotationsBuilder(Function() serviceContext)
        config.DataServiceBehavior.AcceptReplaceFunctionInQuery = True
        config.DataServiceBehavior.AcceptSpatialLiteralsInQuery = True
        config.DisableValidationOnMetadataWrite = True

        config.UseVerboseErrors = True

    End Sub

    Protected Overrides Sub OnStartProcessingRequest(ByVal args As ProcessRequestArgs)


        '*** I do authentication here ***

        MyBase.OnStartProcessingRequest(args)


    End Sub

End Class

0 个答案:

没有答案
相关问题