我们公司正在从Microsoft.Practices.Enterprise.Library
日志记录和异常处理切换到使用Log4Net
。我删除了所有标准的日志记录和异常处理调用,用Log4Net
等效替换它们,但是当我删除了Practices Dlls时,我注意到我们将它们用于ExceptionShielding:
using System;
using System.ServiceModel;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.WCF;
namespace CRM.WCFServices.LeadIntegration.ServiceContracts
{
/// <summary>
/// Interface for systems external to CRM to interact with outbound calls.
/// </summary>
[ExceptionShielding("WCF Exception Shielding")]
[ServiceContract]
public interface IOutboundIntegrationService
{
#region Contracts
[OperationContract]
[FaultContract(typeof (Common.Services.WCF.FaultContracts.ServiceFault))]
void SendOutboundData(string entityName, Guid entityId, DateTime modifiedOn, Guid modifiedBy,
string crmOrganization);
#endregion
}
}
基本问题是“我该如何安全地将其删除?”这涉及回答大部分问题:
答案 0 :(得分:1)
如果我没记错的话,Exception Shielding功能的目的是
做出选择。
如果我的记忆是正确的,那么您需要做的就是在web.config中将includeExceptionDetailInFaults
设置为false,或者在您的服务方法周围放置try / catch块:
try
{
// service code
}
catch (Exception ex)
{
// Log the exception
throw new FaultException("Unknown service failure");
}