如何在Facebook墙上上传照片?

时间:2012-07-18 05:44:06

标签: c# asp.net-mvc-3

朋友们,我正试图以这种方式在Facebook墙上发布照片

这是我的控制代码:

公共课考试         {

        public FacebookMediaObject mediaObject { get; set; }
    }

public ActionResult Profile(FacebookOAuthResult facebookoAuthResult)
{
    DisplayAppropriatemessage(facebookoAuthResult);

    // redirect back to the index action to show the form once again
    return RedirectToAction("Profile");
}

private void DisplayAppropriatemessage(FacebookOAuthResult facebookoAuthResult)
{
    if (facebookoAuthResult != null)
    {
        if (facebookoAuthResult.IsSuccess)
        {
            var mediaObject = new FacebookMediaObject
            {
                ContentType = "image/jpeg",
                FileName = Path.GetFileName(path)
            }
            .SetValue(System.IO.File.ReadAllBytes(path));

            var fb = new FacebookClient(facebookoAuthResult.AccessToken);

            fb.PostAsync("https://graph.facebook.com/me/photos", new Dictionary<string, object> { { "source", mediaObject } });
        }
    }
    throw new NotImplementedException();
}

这里是我的profile.cshtml代码:

@using (Html.BeginForm("Profile", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="file" name="file" id="file" /><br />
    <input type="submit" value="Upload" />
}

当我运行此代码时,当我点击发布按钮时,它会出现以下错误

'/'应用程序中的服务器错误。 没有为此对象定义的无参数构造函数。 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息:System.MissingMethodException:没有为此对象定义无参数构造函数。

来源错误:

  

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

我正在尝试这么多方法,但每次我都失败

2 个答案:

答案 0 :(得分:1)

在某个地方你试图访问一个构造函数并且没有传递任何参数,你向我们展示的所有构造函数都需要一个特定的参数,虽然我在代码中的任何地方都看不到你这样做,所以问题可能在于在申请的另一部分中,

请调试并逐步执行,找到它打破的确切行,并检查您是否确定将参数传递给构造函数。

答案 1 :(得分:0)

有一种猜测是你为控制器定义了一个带参数的构造函数。

每当一个类没有构造函数时,默认情况下就会存在一个隐藏的无参数(没有参数)构造函数。

每当您创建一个带参数的构造函数时,您就不再获得该自动默认构造函数。 MVC期望你的控制器有一个无参数构造函数。