c# - HttpWebRequest UserAgent setter - 此属性未由此类实现

标签 c# facebook windows-phone-7

我正在开发一个简单的应用程序。我正在尝试在我的应用程序中实现面子书。我已经完成了一个示例项目。但是,当我尝试在我的原始项目中实现时,出现错误 This property is not implemented by this class.

public class FacebookLoginPageViewModel
{
    private static WebBrowser _webBrowser;
    private Page _page;
    private const string ExtendedPermissions = "user_about_me,read_stream,publish_stream,user_birthday,offline_access,email";
    private readonly FacebookClient _fb = new FacebookClient();
    private const string AppId = "1XXX58XXXXXXXX9";
    Uri url;
    public FacebookLoginPageViewModel(Panel container, Page page)
    {
        _page = page;
        _webBrowser = new WebBrowser();

        var loginUrl = GetFacebookLoginUrl(AppId, ExtendedPermissions);
        url = loginUrl;
        container.Children.Add(_webBrowser);
        _webBrowser.Navigated += webBrowser_Navigated;
        _webBrowser.Navigate(loginUrl);
    }

    private Uri GetFacebookLoginUrl(string appId, string extendedPermissions)
    {
        var parameters = new Dictionary<string, object>();
        parameters["client_id"] = appId;
        parameters["redirect_uri"] = "https://www.facebook.com/connect/login_success.html";
        parameters["response_type"] = "token";
        parameters["display"] = "touch";

        // add the 'scope' only if we have extendedPermissions.
        if (!string.IsNullOrEmpty(extendedPermissions))
        {
            // A comma-delimited list of permissions
            parameters["scope"] = extendedPermissions;
        }
        return _fb.GetLoginUrl(parameters);
    }

    void webBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
    {
        FacebookOAuthResult oauthResult;
        if (!_fb.TryParseOAuthCallbackUrl(e.Uri, out oauthResult))
        {
            return;
        }

        if (oauthResult.IsSuccess)
        {
            var accessToken = oauthResult.AccessToken;
            LoginSucceded(accessToken);
        }
        else
        {
            // user cancelled
            MessageBox.Show(oauthResult.ErrorDescription);
        }
    }

    private void LoginSucceded(string accessToken)
    {
        try
        {
            var fb = new FacebookClient(accessToken);

            fb.GetCompleted += (o, e) =>
            {
                if (e.Error != null)
                {
                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        MessageBox.Show(e.Error.Message);
                        return;
                    });
                }

                var result = (IDictionary<string, object>)e.GetResultData();
                var id = (string)result["id"];

                LoadFacebookData(accessToken, id);
                var url = string.Format("/com/beno/WP7Client/views/FacebookLoginPage.xaml?access_token={0}&id={1}", accessToken, id);
                var rootFrame = (App.Current as App).RootFrame;
                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    rootFrame.Navigate(new Uri(url, UriKind.Relative));
                });
            };

            fb.GetAsync("me?fields=id");
        }
        catch(Exception ex)
        {
            Console.WriteLine("error.."+ex.ToString());
        }
    }

fb.GetAsync("me?fields=id"); 这里我收到的错误是

System.NotImplementedException: This property is not implemented by this class.
   at System.Net.HttpWebRequest.SetUserAgent(String value)
   at System.Net.HttpWebRequest.set_UserAgent(String value)
   at Facebook.HttpWebRequestWrapper.set_UserAgent(String value)
   at Facebook.HttpWebRequestWrapper.TrySetUserAgent(String userAgent)
   at Facebook.FacebookClient.PrepareRequest(HttpMethod httpMethod, String path, Object parameters,
  Type resultType, Stream& input, Boolean& containsEtag, IList`1& batchEtags)
   at Facebook.FacebookClient.ApiAsync(HttpMethod httpMethod, String path, Object parameters, Type resultType, Object userState)
   at Facebook.FacebookClient.GetAsync(String path, Object parameters, Object userState)
   at Facebook.FacebookClient.GetAsync(String path)
   at TestReactive.com.beno.WP7Client.ViewModels.FacebookViewModel.LoginSucceded(String accessToken)
   at TestReactive.com.beno.WP7Client.ViewModels.FacebookViewModel.webBrowser_Navigated(Object sender, NavigationEvPID:0ED1004E TID:0F8A0042 entArgs e)
   at Microsoft.Phone.Controls.WebBrowser.FireNavigatedEvent(Uri uri)
   at Microsoft.Phone.Controls.WebBrowserInterop.ReversePInvokeThunk.OnNavigated(Int32 webBrowserControlId, String uri)

我很困惑。为什么它在一个项目中工作? Y 它不在另一个项目中工作? 请告诉我解决此问题的任何想法。

最佳答案

当我尝试将 WebHeaderCollection 添加到 header 时,我遇到了类似的错误。在分配这些 header 期间发生异常。将抛出错误消息“该属性未由此类实现”。

解决方案,发现我在 WebRequest 实例化时提供的 URL 中有错误。

简而言之:我的 Web 请求中的格式错误的 URL 导致在将 header 添加到集合时抛出“此类未实现此属性”的错误。修复 URL 修复了错误。

关于c# - HttpWebRequest UserAgent setter - 此属性未由此类实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25484402/

相关文章:

c# - 可选参数与空参数方法和重载的构造函数

c# - Parallel.Foreach 在幕后做了什么?

c# - 用鼠标移动图像 wpf c#

javascript - SEO 和 AureliaJS

c# - 如何获取列表框中单击按钮的索引

c# - 在不同实例中同时加载 2 个 URL CefSharp

php - 邀请 friend 加入应用程序 - Facebook

ios - 有没有一种方法可以在用户时间轴上自动显示 OpenGraph 操作,而无需他们从事件日志中启用它?

c# - Windows Mobile 7 - C# 将 SQL 转换为 Linq,删除表中除前 10 名之外的所有内容

windows-phone-7 - WP7 上的亚文化本地化没有被采纳