在 .net 应用程序中使用 SAP Webservice - 身份验证错误 401

consume SAP Webservice within .net application - authentication error 401

几个小时以来,我一直在尝试在 .net c# 控制台应用程序 (.NET Framework 4.5) 中使用简单的 SAP Web 服务。

sap web服务是我自己创建并激活的,参考这篇文章-> http://scn.sap.com/docs/DOC-38805。它只是在调用服务时传递 "hello world"。

Web 服务使用 username/password 的基本 http 身份验证。如果我使用 SoapUI 调用该服务并使用 pre-emptively 基本身份验证,我会收到所需的响应。客户端向服务端发送的第一个请求包中包含授权header,服务正常。

参考此文档 -> http://scn.sap.com/docs/DOC-38805 我创建了一个 .Net 控制台应用程序,添加了 Web 参考并插入了以下代码:

    sapref1.Z_HELLO_WORLD_TEST2 client = new sapref1.Z_HELLO_WORLD_TEST2();           
sapref1.Z_ERSMA52_TESTSERVICE client_input = new sapref1.Z_ERSMA52_TESTSERVICE();
sapref1.Z_ERSMA52_TESTSERVICEResponse client_response = new sapref1.Z_ERSMA52_TESTSERVICEResponse();

client.PreAuthenticate = true;
client.Credentials = new NetworkCredential("user", "password");
client_response = client.Z_ERSMA52_TESTSERVICE(client_input);

如果我是第一次 运行 应用程序,我会收到网络服务的响应 ("hello world") 但如果我再次 运行 应用程序,我总是会收到未经授权的例外。我用wireshark分析了网络流量。从客户端发送的第一个请求不包含授权 header,服务器响应错误代码 401,导致上述异常。

我阅读了几篇有关此问题的文章,但没有找到适合我的解决方案。有什么方法可以使用 VS 2013 中通过 "add web reference"-函数生成的代理 class 使用 SAP Web 服务? 提前致谢!

我不是 C# 开发人员,但 this answer 似乎提出了一个可行的解决方案,允许您预先发送身份验证详细信息。