1

私はservicestackでFacebook認証を設定していますが、戻り値のタイプ#f = Unknownを取得しています。認証ブロックからのものであることがわかりました。

try
{
    var contents = accessTokenUrl.DownloadUrl();
    var authInfo = HttpUtility.ParseQueryString(contents);
    tokens.AccessTokenSecret = authInfo["access_token"];
    session.IsAuthenticated = true;
    authService.SaveSession(session, SessionExpiry);
    OnAuthenticated(authService, session, tokens, authInfo.ToDictionary());

    //Haz access!
    return authService.Redirect(session.ReferrerUrl.AddHashParam("s", "1"));
}
catch (WebException we)
{
    var statusCode = ((HttpWebResponse)we.Response).StatusCode;
    if (statusCode == HttpStatusCode.BadRequest)
    {
        return authService.Redirect(session.ReferrerUrl.AddHashParam("f", "AccessTokenFailed"));
     }
 }

//Shouldn't get here
return authService.Redirect(session.ReferrerUrl.AddHashParam("f", "Unknown"));

ドロップスルーの理由は、catch が応答ステータス コードをチェックするためです。私のシナリオでは、407 Proxy Authentication Required を受け取りました。

私はそれを次の行まで追跡しました:

var contents = accessTokenUrl.DownloadUrl();

必要なプロキシ認証を導入する方法を手伝ってくれる人はいますか?

情報については、私のアプリは Windows 環境で実行されています。Windows 認証ユーザーとして実行されているため、プロキシ サーバーへのアクセス許可があります。この資格情報または任意の資格情報を使用するようにコードに指示するだけです。

期待して感謝

4

1 に答える 1

0

Web.Config でを設定することにより、.NET アプリケーションのデフォルト プロキシの設定を試すことができます。<defaultProxy/>

<configuration>
  <system.net>
    <defaultProxy>
      <proxy
        usesystemdefaults="true"
        proxyaddress="http://192.168.1.10:3128"
        bypassonlocal="true"
      />
      <bypasslist
        <add address="[a-z]+\.contoso\.com" />
      </bypasslist>
    </defaultProxy>
  </system.net>
</configuration>
于 2013-01-08T13:05:42.527 に答える