Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试发布到facebook时出现空引用异常_C#_Asp.net_Facebook_Nullreferenceexception - Fatal编程技术网

C# 尝试发布到facebook时出现空引用异常

C# 尝试发布到facebook时出现空引用异常,c#,asp.net,facebook,nullreferenceexception,C#,Asp.net,Facebook,Nullreferenceexception,我有一个网页上的文字,我正试图提供给facebook的帖子。我知道facebook的发布代码是正确的,因为如果我用硬编码文本替换我的facebookMsg字符串,它就可以发布了。我遇到的问题是,不知何故,我丢失了上一页的文本。我在facebookPost.aspx页面的顶部包含了:它告诉我应该能够访问我尝试过的默认页面控件Server.Transfer(“~/facebookPost.aspx”,true);以及Response.Redirect(“~/FacebookPost.aspx”);两

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

这是我的密码:

图像按钮从默认值单击事件。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);
            }
    protected void setFacebookMessage(String tempString)
    {            
               facebookMsg = tempString;       
    }
 public String SocialMediaPost
    {
        get
        {
            return SocialMediaHiddenField.Value;
        }
    }
下面是引发异常的代码片段:

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);
            }
    protected void setFacebookMessage(String tempString)
    {            
               facebookMsg = tempString;       
    }
 public String SocialMediaPost
    {
        get
        {
            return SocialMediaHiddenField.Value;
        }
    }
最后,在我的Default.aspx.cs中输入我的SocialMediaPost:

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);
            }
    protected void setFacebookMessage(String tempString)
    {            
               facebookMsg = tempString;       
    }
 public String SocialMediaPost
    {
        get
        {
            return SocialMediaHiddenField.Value;
        }
    }
当我调试时,我甚至无法让系统切换到Default.aspx.cs代码来获取HiddenField值,因此就好像它完全失去了该页面一样


谢谢你的帮助

我发现了问题所在。出现响应。发生重定向,导致页面作为全新页面加载,而不是作为回发加载。因此,正在传入值,但一旦发生重定向,这些值就会丢失,而上一页现在是新页面

为了解决这个问题,我使用了会话


这使我能够将传递的值放入会话中,在会话中可以通过重定向保存该值,并在会话之后进行访问。

也许使用.net的功能会有所帮助?我引用了这些说明,并在目标页面上输入了正确的代码,在源代码中输入了公共属性:public String SocialMediaPost。这就是为什么我不理解为什么它找不到上一页。