我的网络凭据没有从 RestSharp 应用程序传递到我的 Web 应用程序。
这是一个将使用网络服务凭据从计划任务调用的应用程序。
如果我使用 CredentialCache.DefaultNetworkCredential,则会收到 401 错误。 如果我使用我的显式用户名/密码创建一个新的网络凭据对象,则一切正常。 因此,一旦我弄清楚了这个凭据问题,我就相当有信心该应用程序应该可以工作。
在 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 中设置凭据?
在查看了一些 Fiddler 跟踪后,我发现在使用 DefaultNetworkCredentials 时,身份验证标头未设置。
当我使用显式凭据("myUsername","myPassword"(时,将设置身份验证标头并将用户名/密码传递给Web服务。
我可以显式设置身份验证标头,但同样,如果我使用 DefaultNetworkCredential 传递用户名/密码,则调用将失败,因为用户名/密码为空。
所以我的问题似乎是默认网络凭据在运行时为空。我将单独发布该问题。