C# 调用web服务时未处理SoapHeaderException

C# 调用web服务时未处理SoapHeaderException,c#,web-services,exception,C#,Web Services,Exception,第行出现异常 ModifyProfileResp resp = BFGlobal.modifyProfile(req); 内部错误,SoapHeaderException未处理 这段代码基本上是通过我的一个调用来更新web服务上的用户信息 public ModifyProfileResp ModifyProfile(string n_homeTelephone) { try { // Get Login Resp

第行出现异常

ModifyProfileResp resp = BFGlobal.modifyProfile(req);

内部错误,SoapHeaderException未处理

这段代码基本上是通过我的一个调用来更新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;
        }
public ModifyProfileResp ModifyProfile(字符串n_家庭电话)
{
尝试
{
//获取登录响应
LoginResp LoginResp=LoginToBetfair(“用户名”、“密码”);
//制作一个BFGS实例
BFGlobal=新的BFGlobalService();
//在[req]中设置请求
ModifyProfileReq=new ModifyProfileReq();
req.header=新的APIRestHeader();
req.header.sessionToken=loginRep.header.sessionToken;
req.homephone=n_homephone;
//在[resp]中设置响应
//这里是我被抛出异常的地方。。

ModifyProfileResp resp=BFGlobal.modifyProfile(req);//您看到远程web服务出现异常

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

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

请尝试查看以了解更多详细信息。

首先

不要这样做:

catch (Exception)
{   
    throw;
}
这是毫无意义的。如果你没有捕获,异常将自动被抛出一个级别,这就是你使用抛出所做的。此外,如果你不能对异常执行某些操作(如重试请求),你可能最好让异常冒泡

第二,试着这样做:

catch (SoapHeaderException ex)
{
    Debug.WriteLine(ex.Message);
}
这将捕获您正在处理的特定异常。此外,请在Debug语句的此处设置断点。然后,您可以浏览异常的详细信息。您将能够看到stacktrace、内部异常以及SoapHeaderException的抛出者可能希望您看到的任何其他数据


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

引发了什么异常?你能发布消息/堆栈跟踪吗?你得到了什么异常?你应该发布异常,这样任何阅读你问题的人都可以知道失败的原因。内部错误,SoapHeaderException没有处理。@PHP_家伙,听起来你应该把它交给其他人。这太傻了。甚至连@PHP_家伙都没有我们忘了初始化磁通电容器。磁通电容器来自电影《回到未来》…我真的希望你不是1岁,不是美国人,不是2.20岁或更年轻。(@bzlm说不初始化磁通电容器是愚蠢的…)我看到了你的名字,我想你可能不知道C#中的异常情况(老实说,我见过很多C#开发者,他们对异常知之甚少。)
catch (SoapHeaderException ex)
{
    Debug.WriteLine(ex.Message);
}