调用Web服务时,SoapHeaderException未处理

时间:2011-06-21 17:48:13

标签: c# web-services exception

发生异常
ModifyProfileResp resp = BFGlobal.modifyProfile(req);
  

INTERNAL_ERROR,SoapHeaderException未处理

 Error: System.Exception._COMPlusExceptionCode -532462766,

此代码基本上通过我的调用更新了Web服务上的用户信息。

    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;
        }

非常简单,制作请求标头,调用响应,传入req,然后我应该返回一些数据,但我不断在这一行上抛出异常。

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

2 个答案:

答案 0 :(得分:1)

您正在远程网络服务中看到异常。

SoapHeaderException Class

  

通过SOAP调用XML Web服务方法时抛出的异常,并且在处理SOAP标头期间发生异常。

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

尝试查看.InnerException了解详情。

答案 1 :(得分:1)

首先,

不要这样做:

catch (Exception)
{   
    throw;
}

这是毫无意义的。如果你没有捕获,异常将自动被抛出一个级别,这就是你正在做的抛出。此外,如果您无法对异常执行某些操作(例如重试请求),那么最好不要让异常冒泡。

其次,尝试这样的事情:

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

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

当您进行调试时,此信息通常很有用,例如,它可能会说“您忘记初始化磁通电容。”