首页 > 解决方案 > Restsharp 对此资源的访问受到保护 Windows 窗体上的错误

问题描述

我在 C# Windows 窗体应用程序中有此代码

string data = "";
var client = new RestClient("http://server:port/ords/xx_portal_dev/oauth/token");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("Cookie", "BCSI-CS-8eb7fa809579930b=1");
request.AddHeader("Content-Length", "29");
request.AddHeader("Accept-Encoding", "gzip, deflate");
request.AddHeader("Host", "server:port");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");            
request.AddHeader("Authorization", "Basic 3244234wfsdf2342234...");
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("undefined", "grant_type=client_credentials", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
data = response.Content.ToString();

它在 WCF 服务方法中运行良好,但我正在使用 Windows 窗体应用程序,并且在按钮上运行此代码时出现错误,我不知道发生了什么......

我总是收到错误未经授权的“对此资源的访问受到保护”,但在我的 WCF 服务中它工作正常!!!

标签: c#wcfrestsharp

解决方案


取自这里。 https://stackoverflow.com/a/14628308/1390548

你试过这个来验证编码是否正确吗?

request.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue(
        "Basic", Convert.ToBase64String(
            System.Text.ASCIIEncoding.ASCII.GetBytes(
               $"{yourusername}:{yourpwd}")));

推荐阅读