C# 尝试发布到facebook时出现空引用异常
我有一个网页上的文字,我正试图提供给facebook的帖子。我知道facebook的发布代码是正确的,因为如果我用硬编码文本替换我的facebookMsg字符串,它就可以发布了。我遇到的问题是,不知何故,我丢失了上一页的文本。我在facebookPost.aspx页面的顶部包含了:它告诉我应该能够访问我尝试过的默认页面控件Server.Transfer(“~/facebookPost.aspx”,true);以及Response.Redirect(“~/FacebookPost.aspx”);两者都给了我同样的错误 这是我的密码: 图像按钮从默认值单击事件。aspx: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”);两
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。这就是为什么我不理解为什么它找不到上一页。