WCF真的很怪异和出乎意料的行为

时间:2015-01-12 09:56:59

标签: c# .net web-services wcf

我有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的某种错误吗?或者它应该以这种方式工作?如果是这样,怎么可以避免?

0 个答案:

没有答案