我想知道我是否可以使用WCF客户端创建一个方法来返回catch中的其他对象。我想格式化具有所有异常详细信息的引用类型,并通过WCF客户端返回它。这是我想要实现的代码。
[OperationContract]
PendingAccountDto createAccount(AccountActivationDto account);
我的接口实现
public PendingAccountDto createAccount(AccountActivationDto account)
{
try
{
DatabaseHelper.CheckForDatabaseAndCreate();
AccountDto newAccount = new PendingAccountDto(account);
response = DatabaseHelper.CreatePendingAccount(newAccount);
ActivationEmailer.SendEmail(newAccount);
PendingAccountDto pendingAccount = (PendingAccountDto)newAccount;
return pendingAccount;
}
catch(Exception ex)
{
ErrorMessageDto error = ExceptionBuilder.LogErrors(ex);
return error;
}
}
现在在catch中我想返回一个ErrorMessageDto对象,但该方法定义了一个返回类型PendingAccountDto。如果触发了catch,我希望wcf客户端通过客户端返回ErrorMessageDto,但是我不能这样做,因为返回类型期待PendingAccountDto。我已经查看过FaultCOntracts但是每个教程都将它显示为throw,我想要一个返回,这样我就可以通过客户端查看对象了。有任何想法吗?返回类型的泛型不适用于WCF方法。 任何建议都将不胜感激。
当我尝试设置
时,应用程序退出pendingAccount.Error = ExceptionBuilder.LogErrors(ex);
PendingAccountDto pendingAccount = new PendingAccountDto();
pendingAccount.Error = ExceptionBuilder.LogErrors(ex);
response.FailedTransaction(ex);
return pendingAccount;
答案 0 :(得分:1)
从技术上讲,这是可能的。
您需要做的就是使ErrorMessageDTO Object复合/嵌套在PendingAccountDTO对象中,并且可能还为API的调用者提供一个访问器方法调用GetErrorMessageDTO(),以便在错误的场景中检索它。
所以你的代码会做类似的事情;
然后,API的调用者必须通过调用某种API来知道发生了错误。我想你可能有一个API调用" HasSucceed()",它检查并查看ErrorMessageDTO是否已填充,如果是,则返回 False ,其他真。
在HasSucceed()报告False的情况下,调用者将执行GetErrorMessageDTO()来检索它。