【发布时间】:2015-09-11 10:14:55
【问题描述】:
我们使用了一个在 SAP 中创建的 Web 服务。我们能够像使用一样成功连接到服务
var rowss = new EpiCompaniesImplServiceService(); //Service object creation
rowss.Credentials = new NetworkCredential("username", "password");
客户端建议我们不要以纯文本形式发送凭据,而是使用用户名和密码以 base64 编码的字符串形式发送凭据。为此,我们尝试通过将凭据转换为 base64 编码方式来添加授权标头,如下所示,
WebRequest myReq = WebRequest.Create(rowss.Url);
string usernamePassword = "username" + ":" + "password";
CredentialCache mycache = new CredentialCache();
myReq.Credentials = mycache;
myReq.Headers.Add("Authorization", "Basic " + usernamePassword);
但它抛出了 401 未经授权的错误。 现在客户要求我们尝试使用 SOAP 标头传递。请通过 N/W 凭据传递编码凭据或通过 SOAP 标头传递它来建议我一些方法。
【问题讨论】:
-
我认为你需要添加这一行
mycache.Add(new Uri(rowss.Url), "Basic", basic); -
它不是那样工作的。在它自己之前也尝试过
-
您是否尝试过将预认证设置为真:
rowss.PreAuthenticate = true;
标签: c# asp.net web-services soap authorization