【问题标题】:null reference exception while trying to post to facebook尝试发布到 Facebook 时出现空引用异常
【发布时间】:2014-07-11 15:29:12
【问题描述】:

我在一个网页上有文字,我正试图将其提供给 Facebook 帖子。我知道 facebook 发布代码是正确的,因为如果我用硬编码文本替换我的 facebookMsg 字符串,它就会发布得很好。我遇到的问题是我丢失了上一页的文本。我在我的 facebookPost.aspx 页面的顶部包含: 这告诉我我应该能够访问我尝试过的默认页面控件 Server.Transfer("~ /FacebookPost.aspx", true);以及 Response.Redirect("~/FacebookPost.aspx");两者都给我同样的错误。

这是我的代码:

来自 Default.aspx 的图像按钮点击事件:

protected void FacebookImageButton_Click(object sender, ImageClickEventArgs e)
    {
        int fb = 1;

        HiddenField1.Value += "*facebook=" + fb.ToString(); ;
        //Server.Transfer("~/FacebookPost.aspx", true);
        Response.Redirect("~/FacebookPost.aspx");
    }

这是引发异常的代码的 sn-p:

            try
            {
                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    string vals = reader.ReadToEnd();

                    foreach (string token in vals.Split('&'))
                    {
                        tokens.Add(token.Substring(0, token.IndexOf("=")),
                            token.Substring(token.IndexOf('=') + 1, token.Length - token.IndexOf("=") - 1));
                    }
                }

                string access_token = tokens["access_token"];

                 setFacebookMessage(PreviousPage.SocialMediaPost);


                //need to install facebook SDK for .net: 
                //tools/library package manager/manage nuget packages for solution search online for Facebook and install
                var client = new FacebookClient(access_token);
                client.Post("/me/feed", new { message = facebookMsg });
                //Response.Redirect("~/Default.aspx");
            }
            catch (Exception e)
            {
                Response.Write(e.ToString() + "<br/><br/>" + url);
            }

这是我的 facebookPost.aspx.cs 中的 setFacebookMes​​sage 方法:

    protected void setFacebookMessage(String tempString)
    {            
               facebookMsg = tempString;       
    }

最后,我的 Default.aspx.cs 中的 SocialMediaPost:

 public String SocialMediaPost
    {
        get
        {
            return SocialMediaHiddenField.Value;
        }
    }

当我调试时,我什至无法让系统切换到 Default.aspx.cs 代码来获取 HiddenField 值,所以就好像它完全失去了那个页面。

感谢您的帮助!

【问题讨论】:

  • 也许使用 .net 的cross page postback 功能会有所帮助?
  • 我已经参考了这些说明,并在目标页面上使用 和公共属性输入了正确的代码:public String SocialMediaPost 在资源。这就是为什么我不明白为什么它没有找到上一页。

标签: c# asp.net facebook nullreferenceexception


【解决方案1】:

我知道出了什么问题。发生了 Response.Redirect 导致页面加载为全新页面而不是回发,因此正在传递值,但是一旦发生重定向,它们就会丢失,并且上一页现在是新的。

为了解决我使用 Session 的问题。 http://msdn.microsoft.com/en-us/library/vstudio/ms178581(v=vs.100).aspx

这使我可以将传递的值放入 Session 中,在那里它可以通过重定向保存并在它之后访问。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多