【问题标题】:Network Credentials not getting passed in RestSharp conole app网络凭据未在 RestSharp conole 应用程序中通过
【发布时间】:2019-09-03 16:30:34
【问题描述】:

我的网络凭据没有从 RestSharp 应用程序传递到我的 Web 应用程序。

这是一个将从具有网络服务凭据的计划任务中调用的应用程序。

如果我使用 CredentialCache.DefaultNetworkCredential,我会收到 401 错误。 如果我使用我的明确用户名/密码创建一个新的 NetworkCredential 对象,则一切正常。 所以我相当有信心,一旦我解决了这个凭据问题,应用程序应该工作。

是否有在 RestSharp 中设置凭据的特殊过程?

 RestSharp.RestClient c = new RestClient(args[0]); // url from command line.

 var req = new RestRequest(Method.POST);
 req.RequestFormat = DataFormat.Json;
 //NetworkCredential cred = new NetworkCredential("myUserName", "myPassword"); // Works
 NetworkCredential cred = CredentialCache.DefaultNetworkCredentials; // not working
 req.UseDefaultCredentials = true; // used with DefaultNetworkCredentials

 req.Credentials = cred; // set credentials
 req.AddJsonBody(args[1]); // append the JSON body to the POST

 var response = c.Execute(req);  // get the response
 var content = response.Content; // put in a var for some debugging
 System.Console.WriteLine(content); // write out the response for logging

我需要使用其他方法在 RestSharp 中设置凭据吗?

【问题讨论】:

    标签: restsharp networkcredentials


    【解决方案1】:

    查看一些 Fiddler 跟踪后,我发现在使用 DefaultNetworkCredentials 时未设置身份验证标头。

    当我使用显式凭据(“myUsername”、“myPassword”)时,会设置身份验证标头并将用户名/密码传递给 Web 服务。

    我可以显式设置身份验证标头,但同样,如果我使用 DefaultNetworkCredential 传递用户名/密码,则调用将失败,因为用户名/密码为空。

    所以我的问题似乎是 DefaultNetworkCredentials 在运行时为空。我将单独发布该问题。

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多