Ошибка конфигурации 'Facebook.FacebookConfigurationSection' - PullRequest
4 голосов
/ 17 января 2011

Я создал пример приложения asp.net 4.0, в котором есть кнопка Facebook Connect. Я запускаю веб-сайт на IIS.

Сайт работает нормально. Но приложение выдает ошибку при каждом его развертывании в IIS.

После изменения всех значений основной причиной ошибки является изменение «времени простоя» в пуле приложений.

Вот что я сделал, чтобы воспроизвести эту ошибку:

1. Создайте сайт и дайте ему работать через IIS. (В visual studio измените свойства веб-сайта для запуска в настраиваемом веб-сервере).

2. Измените время простоя в пуле приложений (в расширенном режиме) на 1 или 2 мин.

3.Запустите сайт, авторизуйтесь через фейсбук. Тогда не обновляй это. Через 1 или 2 минуты вы получите эту ошибку.

ОШИБКА:

Ошибка сервера в приложении / Facebooktestjan2011.

Ошибка конфигурации Описание: An ошибка произошла во время обработки файла конфигурации, необходимого для обслуживайте этот запрос. Пожалуйста ознакомтесь конкретные подробности ошибки ниже и изменить ваш файл конфигурации соответственно.

Сообщение об ошибке Parser: ошибка произошло создание конфигурации обработчик раздела для facebookSettings: Не удалось загрузить тип 'Facebook.FacebookConfigurationSection'.

Ошибка источника:

Line 8: <configuration><br> Line 9: <configSections><br> Line 10: <section name="facebookSettings"> type="Facebook.FacebookConfigurationSection"/><br> Line 11: </configSections><br> Line 12: <connectionStrings>

Исходный файл: C: \ FacebooktestJan2011 \ web.config Строка: 10

Данные страницы:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
         Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:fb="http://www.facebook.com/2008/fbml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <fb:login-button  autologoutlink='true' 
                      onlogin="window.location.reload()"  
                      Title="Facebook Connect">
     </fb:login-button>
     <asp:label id="lblFBStatus" runat="server" ForeColor="black"/>
        <div id="fb-root"></div>
        <script src="http://connect.facebook.net/en_US/all.js"></script>
        <script>
        FB.init({ appId: 'appid', status: true, cookie: true, xfbml: true });
        FB.Event.subscribe('auth.sessionChange', function (response) {
            if (response.session) {
                // A user has logged in, and a new cookie has been saved
                //                location.href = "../TestFolder/Test.aspx";
            } else {
                // The user has logged out, and the cookie has been cleared
            }
        });
        </script>
    </form>
</body>
</html>

Код сзади:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Dynamic;
using Facebook;

public partial class FacebookTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        FacebookApp fbApp = new FacebookApp();

        if (fbApp.Session != null)
        {
            dynamic myinfo = fbApp.Get("me");
            String firstname = myinfo.first_name;
            String lastname = myinfo.last_name;
            lblFBStatus.Text = "you signed in as " + firstname + 
                               " " + lastname + " to use this credential ";

        }
        else
        {
            lblFBStatus.Text = "Please sign in with facebook";

        } 
    }
}

Файл Web.config:

<configuration>  
  <configSections>  
    <section name="facebookSettings" type="Facebook.FacebookConfigurationSection"/>  
  </configSections>  
  <facebookSettings  
     appId="appid"  
     appSecret="appsecret"  
     cookieSupport="true" />  
  <system.web>
    <compilation debug="false" targetFramework="4.0" />
      <httpHandlers>  
        <add verb="*" path="facebookredirect.axd"    
             type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
      </httpHandlers>  

  </system.web>  
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>

    <handlers>
      <add name="facebookredirect.axd" verb="*" path="facebookredirect.axd"                                   
          type="Facebook.Web.FacebookAppRedirectHttpHandler, Facebook.Web" />
    </handlers>
  </system.webServer>
</configuration>

1 Ответ

2 голосов
/ 09 февраля 2011

В Facebook C # SDK 4.2.1 я обошел ошибку, создав экземпляр FacebookSettings, явно указав в нем идентификатор приложения и секретный ключ (я оставил их в обычном разделе конфигурации AppSettings) и передал этот явный экземпляр настроек конструктору FacebookApp.

Пример:

using Facebook;

var customSettings = new FacebookSettings();
customSettings.AppId = "PUT_APP_ID_HERE";
customSettings.AppSecret = "PUT_SECRET_HERE";

FacebookApp fbApp = new FacebookApp(customSettings);
// success for me

Эта ошибка произошла со мной, когда я выполнял код из проекта модульного тестирования C # без веб-контекста.
Мне не нужно было идти на эту проблему в коде сайта.

...