如何读取asmx Web服务返回的响应头?

时间:2016-08-04 10:24:17

标签: c# asp.net web-services pass-by-reference soapheader

我在C#中制作asmx Web服务,并尝试使用简单的客户端应用程序进行测试。我编写了Web服务的内部代码,但是我必须遵循给定的xml来发布和响应。它应该接收带有身份验证信息的标头并返回令牌和注释。两个方向的标题包含相同的类型,但一半的字段仅用于输入,一半仅用于输出。

标题类的定义大致如下:

public class CustomHeader : SoapHeader
{
     public string InParam;
     public string OutParam;
}

Web服务方法代码如下所示:

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

public class WebService_UD : System.Web.Services.WebService
 {
     public CustomHeader customHeader;

     [WebMethod]
     [SoapHeader("customHeader", Direction = SoapHeaderDirection.InOut)]
     public string CustomWebMethod (int param1, string param2)
     {
         // code reading inner fields of customHeader
         // code updating other inner fields of customHeader
         // code dealing with other parameters and creating normal   return value
     }
 }

测试客户端应用程序如下:

     WebService_UDClient caller = new WebService_UDSoapClient();
     CustomHeader header = new CustomHeader();
     header.InParam = "blip";
     string response = caller.CustomWebMethod(header, 1, "1");
     string outParam = header.OutParam; // returns null here

网络服务似乎无法更改标头。更改标题的InParam也不会在客户端中更改它。问题可能是我没有通过引用传递标题,但我不知道如何更改Web服务代码(因为其余部分是自动生成的)以通过引用传递。

那么我该怎么做,或者如何以其他方式检索响应头?

0 个答案:

没有答案