的SoapException - 缺少的头信息

问题描述:

我试图从Web服务得到一些数据,使用一个简单的控制台应用程序,但是我得到这个错误:的SoapException - 缺少的头信息

SoapException was unhandled
Error - Missing Header Information.

我已经尝试下面的文章:

但我我不允许在WebServer方面工作,所以我没有太多的工作可做。

代码:

namespace ConsoleApplication 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      myWS.WServer WebService = new myWS.WServer(); 
      string[] myMethods = WebService.GetMethods(); 
     } 
    } 
} 

遵循完整的错误消息:

System.Web.Services.Protocols.SoapException was unhandled
HResult=-2146233087 Message=Error - Missing Header Information.
Source=System.Web.Services Actor=Unknown Error Lang=""
Node=Unknown Error Role="" StackTrace: em System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) em System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) em ConsoleApplication3.myWS.WServer.GetMethods() na c:\VS\ConsoleApplication3\ConsoleApplication3\Web References\myWS\Reference.cs:linha 532 em ConsoleApplication3.Program.Main(String[] args) na c:\VS\ConsoleApplication3\ConsoleApplication3\Program.cs:linha 14 em System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) em System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() em System.Threading.ThreadHelper.ThreadStart_Context(Object state) em System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) em System.Threading.ThreadHelper.ThreadStart() InnerException:

尽管有上述的问题,用SoapUIXML,它确实效果很好。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://www.multispeak.org/Version_3.0"> 
    <soapenv:Header> 
     <ver:MultiSpeakMsgHeader Version="3.0" UserID="myId" Pwd="myPwd" AppName="?" AppVersion="?" Company="?" CSUnits="feet" CoordinateSystem="?" Datum="?" SessionID="?" PreviousSessionID="?" ObjectsRemaining="?" LastSent="?" RegistrationID="?"/> 
    </soapenv:Header> 
    <soapenv:Body> 
     <ver:GetMethods/> 
    </soapenv:Body> 

我在想,既然我没有设置在控制台应用程序中任何凭据的问题与认证。

我想出了如何解决它。
据相关认证,如下面的例子:

WebService .MultiSpeakMsgHeaderValue = new MultiSpeakMsgHeader { 
    Pwd = "***", 
    UserID = "***" 
}; 

调用之前的方法。