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

时间:2015-07-12 18:14:08

标签: c# .net web-services sap

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

sap web服务是由我自己创建并激活到本文的 - > http://scn.sap.com/docs/DOC-38805。它只是在调用服务时传递“hello world”。

Web服务使用基本的http auth和用户名/密码。如果我使用SoapUI调用该服务并使用先发制人的基本身份验证,我会收到所需的响应。从客户端发送到服务器的第一个请求包包括授权标头,服务正常工作。

参考本文件 - > 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);

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

我读了几个关于这个问题的清晰度,但我找不到任何对我有用的解决方案。有没有办法使用通过VS 2013中的“添加Web引用”功能生成的代理类来使用SAP Web服务? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

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