【问题标题】:Empty exception on calling method调用方法的空异常
【发布时间】:2012-10-02 15:44:00
【问题描述】:

我有以下代码:

public class A: IContract, ...
{
    private B b = new B(); 
    // contract method
    public string MethodA(string p1, string p2)
    {
        Log("Start");
        SomeObject obj = CreateObj(p1, p2);
        Log("Before Send");
        string result = b.SendToExternalSth(obj);
        // do sth
        return result;
    }
}

public class B
{
    public string SendToExternalSth(SomeObject obj)
    {
        Log("BEGIN");
        string a, b;
        a = proxy.Send(obj);
        // do sth
        Log("End");
        return a;
    }
}

在执行Before Send 行后,我得到了带有空消息的System.Exception,并且异常的堆栈跟踪指向与关闭} 的行,用于SendToExternalSth 方法。

你知道为什么会这样吗? 我应该提到:

  • 这只发生在生产环境中(在本地和测试环境中工作),
  • 代码在 c# - .net 4.0 中,
  • 此代码是托管在 IIS 7.0 下的soap Web 服务代码(MethodA 是一个soap 操作,SendToExternalSth 方法是某个其他类的内部方法)的一部分,
  • 我正在使用“任何 cpu”选项构建它,
  • 我正在生产环境中部署 Debug
  • 生产和测试环境都是 64 位 windows 2008 r2 sp1,
  • .net 4 framework 都安装了相同的版本,
  • 与测试环境相比,生产服务器上缺少 Microsoft .NET Framework 4 Multi-Targeting Pack 组件,但目前我无法在那里安装它。

如果需要更多信息来解决这个问题,请告诉我,我很乐意为您提供。

【问题讨论】:

  • 我认为您的生产环境正在运行Release 构建?尝试部署Debug 编译,看看您是否获得更多/更好的信息以及更好的行号匹配。
  • 我已经在生产环境中将构建类型更改为Debug,不幸的是它没有帮助。
  • 也许可以尝试用它们自己的 try/catch/log 包装这些方法体。也许这是一个问题,whatever 正在追赶失败。

标签: c# .net exception iis soap


【解决方案1】:

我已经编写了更多调试代码并多次更改了编译选项。下次部署到生产环境后,此错误未发生。我认为这是与Any CPU 选项相关的一些编译问题,但这只是猜测。

【讨论】:

  • 请告诉我,如果我对自己的回答做得很好,或者我应该投票赞成删除我的问题。
猜你喜欢
  • 2013-09-17
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多