c# - 需要代理身份验证(Forefront TMG 需要授权才能完成请求。拒绝访问 Web 代理筛选器。)

标签 c# .net twitter exception twitter-oauth

当我尝试向 Twitter 发布消息时,出现了上述错误。如何摆脱那个错误?

堆栈跟踪如下:

Exception = {"The remote server returned an error: (407) Proxy Authentication Required."} ExceptionStatus = ProtocolError

代码:

private string GetOAuthUrl()
{
    IFluentTwitter twitter;

    //Override the callback url if one was entered
    if (CallbackUrl != null && CallbackUrl.Trim().Length > 0)
    {
        twitter = FluentTwitter.CreateRequest().Configuration.UseHttps().Authentication.GetRequestToken(ConsumerKey, ConsumerSecret, CallbackUrl);
    }
    else
    {
        twitter = FluentTwitter.CreateRequest().Configuration.UseHttps().Authentication.GetRequestToken(ConsumerKey, ConsumerSecret);
    }

    var response = twitter.Request();
    UnauthorizedToken UnauthorizedToken = response.AsToken();

    string AuthorizationUrl = FluentTwitter.CreateRequest().Authentication.GetAuthorizationUrl(UnauthorizedToken.Token);
    return AuthorizationUrl;
}

最佳答案

如果 fluent twitter 在幕后使用 WebRequests,那么您需要使用如下代码指定代理的凭据:

 System.Net.WebRequest.DefaultWebProxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

这将告知所有 Web 请求使用运行应用程序的用户的凭据向代理进行身份验证。

要使其正常工作,您需要将应用程序配置为在已被授予代理服务器访问权限的服务帐户下运行。然后,您可以绑定(bind)此服务帐户,使其拥有尽可能少的权限来运行该服务。

如果您的应用程序需要在无权使用代理服务器的帐户下运行,您可以按如下方式明确指定凭据:

System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password", "domain");
System.Net.WebRequest.DefaultProxy.Credentials = credentials;

这样做的缺点是您必须将这些凭据存储在某个地方,如果攻击者设法破坏您的应用程序,它们可能会被捕获。在某些环境中,从安全角度来看,这是 Not Acceptable 。

关于c# - 需要代理身份验证(Forefront TMG 需要授权才能完成请求。拒绝访问 Web 代理筛选器。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984101/

相关文章:

c# - 在 onChange 事件中从动态创建的 RichTextBox 中获取文本

c# - C# 中的 Twitter Oauth

java - 如何修复 Java 中的 Kafka 错误 "IOException caught when establishing connection to https://stream.twitter.com"?

c# - 反编译和反向工程 dll 以生成 ASP.NET MVC web 项目

c# - 接口(interface)类型转换

c# - Azure Web 应用程序未从配置选项卡中获取值

c# - Enumerable.Range 的高内存消耗?

.net - 当文件无法访问时,企业库日志记录 4.1 不会写入错误监听器

c# - 从 Dictionary<string, string> 获取第一个键

ios - 如何快速处理从多个社交登录帐户重定向回应用程序的登录?