为什么可以';当调用wcf服务并接收到POCO响应时,无法找到临时目录
本文关键字:POCO 响应 服务 wcf 调用 为什么 | 更新日期: 2023-09-27 18:19:32
我正在尝试调用现有的WCF服务。我已经生成(并更新了许多次)服务参考。此服务有两种方法。一个方法返回一个字符串,另一个返回一个大的POCO。当我使用本地IIS(而不是IIS Express)调用字符串方法,并为我打算在DEV中使用的服务帐户设置应用程序池时,我会得到有效的响应。当我调用另一个方法时,我收到这个错误。
mscorlib.dll中出现"System.ServiceModel.FFaultException"1"类型的异常,但未在用户代码中处理其他信息:找不到路径"C:''Windows''TEMP''1c4e1c24-69a4-cdd-bca8-73f6b2415d48"的一部分。
当我用相同的输入参数使用WCFTestClient.exe调用相同的方法时,我会收到一个成功的回复。
我的临时目录具有Everyone组的修改访问权限。
这是我用来调用服务的代码。
public class BackupRetrievalServiceClient : ClientBase<IBackupRetrievalService>, IBackupRetrievalService
{
public BackupRetrievalServiceClient()
{
}
public BackupRetrievalServiceClient(string endpointConfigurationName) :
base(endpointConfigurationName)
{
}
public BackupRetrievalServiceClient(string endpointConfigurationName, string remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
}
public BackupRetrievalServiceClient(string endpointConfigurationName, EndpointAddress remoteAddress) :
base(endpointConfigurationName, remoteAddress)
{
}
public BackupRetrievalServiceClient(System.ServiceModel.Channels.Binding binding, EndpointAddress remoteAddress) :
base(binding, remoteAddress)
{
}
public ProformaDataContract GetClientProformaData(string socialSecurityNumber)
{
return Execute(client => client.GetClientProformaData(socialSecurityNumber));
}
public string GetVersion()
{
return Execute(client => client.GetVersion());
}
#region Execute
private static TResult Execute<TResult>(Func<IBackupRetrievalService, TResult> function)
{
TResult result;
BackupRetrievalService.BackupRetrievalServiceClient client = new BackupRetrievalService.BackupRetrievalServiceClient();
try
{
result = function(client);
}
finally
{
try
{
if (client.State != CommunicationState.Faulted)
{
client.Close();
}
}
catch
{
client.Abort();
}
}
return result;
}
#endregion
}
错误是在GetClientProformData方法的单行上引发的。
我的印象是,由于WCF测试,这个错误发生在我这边,而不是服务端。显然,我的输入被错误地传递了,所以我的WCF测试不是一个有效的测试。此外,这个错误是从服务传给我的,与它对临时目录的使用有关,但只有在传入某些类型的输入时才会引发和异常。
解决方案:我修复了我的代码以正确地传递参数,并与其他团队进行了沟通,以便他们改进参数验证,抛出更好的错误消息,和/或修复导致临时文件夹清理在异常情况下失败的错误。
感谢所有回应我的人,甚至花了几秒钟时间思考我的问题。