Сеанс IIS7 ASP.NET падает в считанные секунды - PullRequest
0 голосов
/ 19 марта 2010

Для тестирования у меня есть 1 изолированная страница - без мастеров, элементов управления,…. Мои сеансы теряются примерно через 30 секунд. Я попытался установить тайм-аут на самой странице, в web.config, и то, и другое. Пробная аутентификация форм с тайм-аутом и аутентификацией Windows. Перезапустите AppPool после изменений.

Я могу использовать response.write из Session_Start, но я никогда не получаю response.write из Session_End.

Некоторые вещи, которые я пробовал:

<sessionState mode="InProc"
  stateConnectionString="tcpip=127.0.0.1:42424"
  sqlConnectionString="data source=127.0.0.1;"
   cookieless="false"
   timeout="20" />

<sessionState mode="InProc" cookieless="false" timeout="20"/>

<sessionState mode="InProc" timeout="20"/>

<sessionState timeout="20"/>

Не повезло.

У меня установлено время выполнения:

<httpRuntime useFullyQualifiedRedirectUrl="true" 
maxRequestLength="204800" 
requestLengthDiskThreshold="204800" 
executionTimeout="600" />

Я не знаю, что это будет значить, но я не могу придумать, что еще можно опубликовать!

Спасибо!

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Если вы выполняете сеансы inproc (что говорит фрагмент) и что-то продолжает касаться виртуальной папки или чего-либо ниже, будьте готовы потерять много сеансов.это исправление:

'This is supposed to turn off the monitoring for directory deletes
'See https://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=240686
'This incurrs the penelty of an IISRESET or manually restarting the containing AppPool after every upgrade.
Dim pi As PropertyInfo
Dim o As Object
Dim m As MethodInfo
pi = GetType(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", BindingFlags.NonPublic Or BindingFlags.Public Or BindingFlags.Static)
o = pi.GetValue(Nothing, Nothing)
m = o.GetType().GetMethod("Stop", BindingFlags.Instance Or BindingFlags.NonPublic)
m.Invoke(o, New Object() {})
0 голосов
/ 19 марта 2010

Откуда вы знаете, что ваша сессия теряется? В вашем браузере включены куки?

EDIT:
Вот намного более простая тестовая страница:

<body>
    <form id="form1" runat="server">
    <div>
        Session value is: <%= Session["testvalue"] %><br />
        <asp:TextBox ID="txtText" runat="server"></asp:TextBox>
        <asp:Button ID="btnSet" runat="server" Text="Set" OnClick="btnSet_Click" /><br />
        <asp:Button ID="btnRefresh" runat="server" Text="Refresh" />
    </div>
    </form>
</body>

И код позади:

public partial class SessionTest : System.Web.UI.Page
{
    protected void btnSet_Click(object sender, EventArgs e)
    {
        Session["testvalue"] = txtText.Text;
    }
}

Другая возможность - потеря сеансов из-за перезапуска домена приложения. Добавьте какой-нибудь вывод журнала в Application_Start.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...