尝试发布到Facebook时出现null引用异常

时间:2014-05-22 14:16:54

标签: c# asp.net facebook nullreferenceexception

我在一个网页上有文字,我试图提供给Facebook帖子。我知道facebook发布的代码是正确的,因为如果我用硬编码的文本替换我的facebookMsg字符串,它就会发布。我遇到的问题是某种程度上我正在丢失上一页的文本。我已经在facebookPost.aspx页面的顶部包含:<%@ PreviousPageType VirtualPath ="〜/ Default.aspx" %GT;这告诉我,我应该能够访问默认页面控件我已经尝试过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");
    }

以下是抛出异常的代码片段:

            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值,因此它就好像它完全丢失了那个页面一样。

感谢您的协助!

1 个答案:

答案 0 :(得分:0)

我弄清楚出了什么问题。发生了一个Response.Redirect,导致页面加载为一个全新的页面而不是回发,因此值被传入,但一旦重定向发生,它们就会丢失,而上一页现在是新的。

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

这允许我将传递的值放入Session,可以通过重定向保存并在其后访问。