【问题标题】:SoapHeaderException was unhandled when calling web service调用 Web 服务时未处理 SoapHeaderException
【发布时间】:2011-06-22 01:56:15
【问题描述】:

线上出现异常

ModifyProfileResp resp = BFGlobal.modifyProfile(req);

INTERNAL_ERROR,SoapHeaderException 未处理

 Error: System.Exception._COMPlusExceptionCode -532462766,

这段代码基本上是通过我的调用来更新网络服务上的用户信息。

    public ModifyProfileResp ModifyProfile(string n_homeTelephone)
    {
        try
        {
            // Get Login Resp
            LoginResp loginResp = LoginToBetfair("username", "password");

            // Make a BFGS instance
            BFGlobal = new BFGlobalService();

            // Set up the request in [req]
            ModifyProfileReq req = new ModifyProfileReq();
            req.header = new APIRequestHeader();
            req.header.sessionToken = loginResp.header.sessionToken;
            req.homeTelephone = n_homeTelephone;


            // Set up the response in [resp]
            // Here is where Im getting thrown an exception..
            ModifyProfileResp resp = BFGlobal.modifyProfile(req); // <-- Here Im getting thrown an exception

            // return [resp] - which is the response from the call
            // Just trying to print out errror codes
            string mec = resp.minorErrorCode.ToString();
            string ec = resp.errorCode.ToString();

            return resp;
        }
        catch (Exception)
        {

            throw;
        }

非常简单,制作请求标头,调用响应,传入请求,我应该得到一些数据,但我一直在这一行抛出异常。

关于如何解决这个问题的任何想法?

【问题讨论】:

  • 抛出什么异常?您可以发布消息/堆栈跟踪吗?
  • 你遇到了什么异常?
  • 您应该发布异常,以便阅读您的问题的任何人都可以对失败的原因有所了解。
  • INTERNAL_ERROR,SoapHeaderException 未处理。
  • @PHP_Guy,听起来你应该把它带到the Betfair developer forum

标签: c# web-services exception


【解决方案1】:

首先,

不要这样做:

catch (Exception)
{   
    throw;
}

没有意义。如果您没有 catch,异常将自动被抛出一个级别,这就是您使用 throw 所做的。此外,如果您无法对异常执行某些操作(例如重试请求),您最好让异常冒泡。

其次,试试这样的:

catch (SoapHeaderException ex)
{
    Debug.WriteLine(ex.Message);
}

这将捕获您正在处理的特定异常。此外,在 Debug 语句上设置断点。然后,您可以浏览异常的详细信息。您将能够看到堆栈跟踪、内部异常以及 SoapHeaderException 的抛出者可能希望您看到的任何其他数据。

此信息在您调试时通常很有用,例如,它可能会显示“您忘记初始化磁通电容器”。

【讨论】:

  • 这太傻了。即使是@PHP_Guy 也不会忘记初始化磁通电容器。
  • 磁通电容器是从电影回到未来的......我非常希望你要么 1. 不是美国人,要么 2. 20 岁或更年轻。 (@bzlm 说不初始化磁通电容器很愚蠢......)我看到了你的名字,并认为你可能不知道 C# 中的异常(老实说,我遇到了很多 C# 开发人员,他们没有'对异常了解不多。)
【解决方案2】:

您看到来自远程 Web 服务的异常。

SoapHeaderException Class

通过 SOAP 调用 XML Web services 方法并且在处理 SOAP 标头期间发生异常时引发的异常。

您可能没有按照远程服务的要求设置标头。尝试从远程获取帮助。

尝试查看.InnerException 了解更多详情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多