我有WCF Service Application
,其中包含10-15项服务。服务通常用于相同的目的但具有不同的实现。有一个非常简单的方法,它是肥皂服务的一部分。该方法基本上看起来像这样
public Data GetData(string param1, string param2, string checksum)
{
try
{
if (Utilities.StringsAreEmpty(param1, param2, checksum)
{
throw new FaultException<ServiceFault>(){ ErrorCode = 1 };
}
var caller = Repository.GetProviders(param1);
if (caller == null)
{
throw new FaultException<ServiceFault>(){ ErrorCode = 2 };
}
var realChecksum = Utilities.CalculateSha256Hash(string.Format("{0}{1}{2}", param1, param2, caller.Key));
if (realChecksum != checksum)
{
throw new FaultException<ServiceFault>(){ ErrorCode = 3 };
}
var data = Repository.GetData(param2);
return data;
}
catch (Exception ex)
{
LogException(ex);
throw new FaultException<ServiceFault>(){ ErrorCode = 99 };
}
}
上面显示的方法完美无缺,正如预期的那样。一段时间后,我不得不修改一些其他服务,然后在执行此操作并将更改发布到服务器(所有这些服务都构建为一个.dll程序集,因此无法部分部署)这种特殊方法开始表现得非常奇怪。我没有在Log中看到任何错误,并且方法本身根本没有返回任何内容。现在我做的第一件事就是删除了try catch
块,(之前我遇到过这种问题并删除了try catch
),而且神奇的一切都开始了。现在,我在这里看不到任何问题,因为我第二次遇到这种问题,现在我真的很担心。有人可以解释为什么try catch
删除工作在这里?我第一次遇到这个问题时发生内部服务器错误,来自服务器的响应绝对没有。甚至没有错误HTML(由wcf返回)或类似的东西。这是WCF的某种错误吗?或者它应该以这种方式工作?如果是这样,怎么可以避免?