VC调用带有Soap Header的C#写的普通WebService(.net2.0)
一般的 Web Method 已经通过 sproxy工具成功生成了cpp client 类
测试好使,不过又想到了,发布在局域网的IIS后, 是可以在服务器的本机测试的,
如果用户好奇心很强,动手能力还差不多,那么就容易崩溃了。。。
所以经过搜索,得到了 使用 soap header 的一个方法 来增加一个简单的验证方式。
结果,出现了问题,新建立的 WebService1.asmx.cs 代码如下:
using System;using System.Collections.Generic;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;namespace Test1{ [Serializable] public class AuthHeader : SoapHeader { private string _username; private string _password; public string UserID { get { return _username; } set { _username = value; } } public string Password { get { return _password; } set { _password = value; } } } /// <summary> /// WebService1 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class WebService1 : System.Web.Services.WebService { public AuthHeader theHeader; [WebMethod] public AuthHeader Dummy() { return null; } [WebMethod(Description = "QueryRuntimeCommand.")] //[SoapHeader("theHeader", Direction = SoapHeaderDirection.In)] public string QueryRuntimeCommand(string TaskWorkingID, out string RuntimeCommand) { string ErrText = "QuerySuccess"; RuntimeCommand = "Start"; if (theHeader == null || theHeader.UserID == null) return "Unauthenticated"; if (theHeader.UserID != "wawa") return "Unauthenticated"; return ErrText; } }}