Я создал пример приложения 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>