Дорогие специалисты,
I имеют веб-приложение aspx которое требует для того чтобы побежать больше чем 8 часов снаружи освежают или logout. Пожалуйста никакие соединения а я не хотел были бы знать Кодего некоторого VB.NET или перерыв встречи яваскрипта предупреждая всплывающий сценарий говорит: «Не было работы на некоторое время. Щелкните «ОДОБРЕНН» если вы желаете продолжать вашу встречу, или щелчки «Cancel» для того чтобы logout. Для вашей обеспеченности если вы неспособны ответить к этому сообщению не познее 2 минуты, то вы будете внесены в журнал вне автоматически» и перенаправляете к login.aspx после того как перерыв теряет силу.
I делает это на 2 дня без любого успеха, также я хотел было бы вы smogло увидеть мое Кодего ниже: web.config, global.asax, login.vb для вашего просмотрения и ваша помощь реально очень благодарный. Thanks.
WEB.CONFIG
: По мере того как алтернатива к руке редактируя этот архив вы может использовать инструмент admin стержня для того чтобы установить установки для вашего применения. Use вариант конфигурации Website->Asp.Net в визуально списке Studio. a полном установок и комментариев можно найти в ments machine.config.com обычно располагаемых в \ Windows \ Microsoft.Net \ Framework \ v2.x \ Config--name= " system.web.extensions» type= " System.Web.Configuration >
. SystemWebExtensionsSectionGroup, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, type= " System.Web.Configuration name= " PublicKeyToken=31BF3856AD364E35 " scripting». ScriptingSectionGroup, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, scriptResourceHandler» type= " System.Web.Configuration name= " PublicKeyToken=31BF3856AD364E35 ". ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, webServices» type= " System.Web.Configuration name= " » requirePermission= " PublicKeyToken=31BF3856AD364E35 ложные» allowDefinition= " MachineToApplication». ScriptingWebServicesSectionGroup, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, jsonSerialization» type= " System.Web.Configuration name= " PublicKeyToken=31BF3856AD364E35 ". ScriptingJsonSerializationSection, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, profileService» type= " System.Web.Configuration name= " » requirePermission= " PublicKeyToken=31BF3856AD364E35 ложное» allowDefinition= " Everywhere». ScriptingProfileServiceSection, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, authenticationService» type= " System.Web.Configuration name= " » requirePermission= " PublicKeyToken=31BF3856AD364E35 ложное» allowDefinition= " MachineToApplication». ScriptingAuthenticationServiceSection, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, allowDefinition= " MachineToApplication» name=» requirePermission= " PublicKeyToken=31BF3856AD364E35 ложное» "roleService» type= " System.Web.Configuration. ScriptingRoleServiceSection, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, requirePermission= " ложное» allowDefinition= " MachineToApplication»/> 64E35»/> --> mode= установленное " поистине» ввести символы доводка в составленную страницу. Потому что это влияет на представление, установите это значение для того чтобы true только во время вариантов development.
Висуал Басич: Strict= установленное " поистине» disallow весь тип данных преобразований где потеря данных может произойти. Explicit= установленное " поистине» принудить объявление всего variables. --batchTimeout= " 43200 defaultLanguage= " VB» numRecompilesBeforeAppRestart= " debug= " поистине»» explicit= " поистине 15 assembly= " System.Core > » strict= " ложное ", Version= 3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089» assembly= " System.Web.Extensions , Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35» assembly= " System.Data.DataSetExtensions , Version= 3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089» assembly= " System.Web.Extensions . Design, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35» assembly= " System.Design , Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A» assembly= " System.Windows.F />orms, Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089» assembly= " System.Drawing.Design , Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A» assembly= " Microsoft.Office.Interop.Excel , Version= 11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c» assembly= " System.Xml /> , Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089» assembly= " System.DirectoryServices , Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A» assembly= " System.DirectoryServices.Protocols , Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A» assembly= " System.ServiceProcess /> , Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A» assembly= " System.Web.RegularExpressi/> />ons, Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A» офис assembly= ", Version= 11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c» доступность assembly= ", Version= 2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A» assembly= " CrystalDecisions.CrystalReports . Engine, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304» assembly= " CrystalDecisions.Enterprise.Framework , Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304» assembly= " CrystalDecisions.ReportAppServer.ClientDoc , Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304» assembly= " CrystalDecisions.Shared , Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304» assembly= " CrystalDecisions.Enterprise.InfoStore , Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521.ReportSource , Version=10.5.3700.0, Culture=neutral,» assembly= " Microsoft.Office.Tools.Excel.v9.0 , Version= 9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A/>e1304 PublicKeyToken=692fbea5521e1304 PublicKeyToken=692fbea5521e1304» namespace= система» namespace= " System.Collections» namespace= " System.Collections " /> . Generic» namespace= " System.Collections . Specialized» namespace= " System.Configuration» namespace= " System.Text» namespace= " System.Text.Reg />ularExpressions» namespace= " System.Linq» namespace= " System.Xml.Linq» namespace= " System.Xml» namespace= " System.Web» namespace= " System.Web.Caching» namespace= " System.Web.SessionState» namespace= " System.Web.Security» namespace= " System.Web.Profile» namespace= " System.Web.UI» namespace= " System.Web.UI.WebControls» namespace= " System.Web.UI.WebControls.WebParts " namespace= " System.Web.UI.HtmlControls» namespace= " System.DirectoryServices " tagPrefix= " asp /> /> tagPrefix= " ajaxToolkit»/> it»» assembly= " AjaxControlToolkit namespace= " » assembly= " System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35»» namespace= " System.Web.UI.WebControls tagPrefix= " asp » assembly= " System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35»» namespace= " System.Web.UI/> раздел включает конфигурации режима удостоверения подлинности обеспеченностью используемого ASP.NET для того чтобы определить входящего потребителя. timeout= " 480 " --enabled= " поистине " mode= er> " формирует " timeout= " loginUrl= " login.aspx > 540» protection= "» name=» .authCookie все»» path=/" users=/> users= />
"» slidingExpiration= " поистине " cookieless= " UseCookies " timeout=
" 540 * " /> > defaultRedirect= " GenericErrorPage.htm " statusCode= " 403» redirect= " NoAccess.htm» statusCode= " 404» redirect= " FileNotFound.htm»/> » path= " *.asmx» *» validate= " ложное». ScriptHandlerFactory, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35» type= " System.Web.Script.Services» validate= " " *_AppService.axd» path= verb= " * ложное». ScriptHandlerFactory, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, Validate= " ложное» enabled= "» type= " System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35»» path= " ScriptResource.axd ГОЛОВКИ verb= " PublicKeyToken=31BF3856AD364E35» ПОЛУЧИТЕ, defaultProvider= " MyXmlSiteMapProvider » type= " System.Web.Handlers.ScriptModule, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35» " ScriptModule name= /> true " description= " провайдер MyXmlSiteMapProvider» name= " > SiteMap которое читает внутри архивы .sitemap.» type= " System.Web.XmlSiteMapProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d /> "; cs; csharp " extension= " .cs " warningLevel= " 4 " type= " Microsoft.CSharp.CSharpCodeProvider, система, Version= 2.0.0.0, Culture=neutral, vb language= " " value= " " WarnAsError " name= name= " PublicKeyToken=b77a5c561934e089 " CompilerVersion " value= " v3.5 " ложное; vbs; visualbasic; warningLevel= " " extension= " .vb vbscript " 4 value= " " OptionInfer name= " " value= " v3.5 " " CompilerVersion name= " type= " Microsoft.VisualBasic.VBCodeProvider, система, Version= 2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 " true " value= " ложное "/>
/> раздел system.webServer необходимо для бежать ASP.NET AJAX под информационными службами 7.0 Internet . Не обязательно для предыдущей версии IIS. --integratedMode " type= " System.Web.Script.Services " preCondition= " " *.asmx " path= " verb= " ScriptHandlerFactory name= " name= " name= " name= " /> " preCondition= " " ScriptModule name= name= " /> validateIntegratedModeConfiguration= " ложное " ScriptModule type= " System.Web.Handlers.ScriptModule, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, name= " ScriptResource/>s/>AppService ScriptHandlerFactoryrated/>tory-Integ64E35 PublicKeyToken=31BF3856AD3er " managedHandliptHandlerFactory, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 " integratedMode " type= " System.Web.Script.Services " preCondition= " " *_AppService.axd " path= " verb= " ScriptHandlerFactoryAppServices name= " *. ScriptHandlerFactory, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35 " integratedMode " verb= " " preCondition= " " ScriptResource name= ПОЛУЧАЕТ, урна /> " " path= " ГОЛОВКИ " ScriptResource.axd " type= " System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version= 3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35: схимы-microsoft-com: asm.v1 " name= " System.Web.Extensions " > publicKeyToken= " 31bf3856ad364e35 " oldVersion= " 1.0.0.0 - 1.1.0.0 " newVersion= " 3.5.0.0 " name= " System.Web.Extensions.Design " /> publicKeyToken= " 31bf3856ad364e35 " oldVersion= " 1.0.0.0 - 1.1.0.0 " newVersion= " 3.5.0.0 " allowOverride= " true " server=AVC " value= " " ConnectionString key= > ; database=NNN; uid=User; pwd=user " key= " ActiveDirectoryConn " value= " LDAP/>
et " server=AVC " value= " " ConnectionString name= /> ; database=NNN; uid=User;
ручек btnLogin.Click
btnLogin_Click/>
LOGIN.VB
Protected pwd=user " Sub (прислужника ByVal как предмет, ByVal e как System.EventArgs) затемняет adPath как шнур = «LDAP: //DC=cool, DC=net " затемняют adAuth как новое Try SITE.LDAPAuthentication (adPath) если поистине = adAuth.IsAuthenticated, то (txtDomain.Text, txtusername. Текст, txtPassword.Text) Then
'получает ролей потребителя тусклые группы по мере того как шнур =
adAuth.GetGroups () 'создают билет, и добавляет isCookiePersistent groups. тусклое как булевское = authTicket chkPersist.Checked тусклое по мере того как новое 12), isCookiePersistent, групп)
FormsAuthenticationTicket (1, txtUsername.Text, DateTime.Now, DateTime.Now.AddHours ('шифрует encryptedTicket ticket. тусклое по мере того как
шнура = FormsAuthentication.Encrypt (authTicket) 'создает a печенье, и после этого добавляет ый билет к печенью как authCookie data. тусклое как новое HttpCookie (FormsAuthentication. FormsCookieName,
encryptedTicket) 'если проверены, что 'для того НОП браузер пишет ChkPersist время выдыха печенья должно быть установленным «не смущает FormsAuthenticationTicket.Expire с печеньем теряет силу , то времени если поистине = isCookiePersistent Then конец If
authCookie.Expires = authTicket.Expiration «добавляет печенье к общительным печеньям collection. HttpContext.Current.Response.
Cookies.Add (authCookie) «вы можете перенаправить now. «Response.Redirect (FormsAuthentication.GetRedirectUrl (txtUsername.Text, ложные)) Response.Redirect (FormsAuthentication.GetRedirectUrl (txtUsername.Text, chkPersist.Checked)) « Else Response.Redirect («default.aspx») errorLabel.Text = «удостоверение подлинности не преуспело. Проверите имя и пароль потребителя. Сделайте конечно ваш клавиш фиксации заглавного регистра на вашей клавиатуре. «задвижка If конца ex как Exception errorLabel.Text = «authenticating ошибки. » + ex. Применение Language= " VB " Кодий Sub
GLOBAL.ASAX
<%@ конца Try
конца Message " сервера " runat= %>
/>
» которое бежит на Кодем Sub Application_End Sub конца startup применения (прислужника ByVal как предмет, ByVal e как EventArgs)» Кодий которое бежит на Sub shutdown » которое бежит когда unhandled occurs Sub
Sub Session_Start конца/> (прислужника ByVal как предмет, ByVal e как EventArgs)» Кодий которое бежит когда новая, котор встреча будет пожары quest Application_AuthenticateRe « Sub Application_BeginRequest Sub конца Sub
Sub Session_End конца Session.Timeout = 1 (прислужника ByVal как предмет, ByVal e как EventArgs) (прислужника ByVal как предмет, ByVal e как EventArgs)» горит в начале каждого/>/> request l как предмет, ByVal e как EventArgs)/>» по пытать authenticate use
затемняет cookieName Как шнур = FormsAuthentication.FormsCookieName затемняют authCookie как
HttpCookie = Context.Request.Cookies (cookieName) если, котор authCookie ничего, то Then 'там будет никаким authTicket If конца удостоверения подлинности/authorization cookie. Return тусклым как authTicket FormsAuthenticationTicket = Nothing Try = FormsAuthentication.Decrypt (authCookie. Задвижка значения) ex как исключение хода Exception новое (ex. сообщения) «пишет исключение к печенью случая Log. » Try конца Return если не (authTicket.IsPersistent) Then , то если (authTicket.Expired) Then 'потерпел неудачу к decrypt. If конца If конца Return 'когда билет был создан, свойство UserData задало a 'труб-размежеванный шнур групп группы names. тусклых как шнур () = authTicket.UserData.Split (чарс New () {«| " c}) 'создает удостоверение личности Identity. тусклое как новое System.Security.Principal.GenericIdentity (authTicket.Name, «LDAPAuthentication») 'эта глава, котор подачи в течении request. затемняют главу по мере того как новое System.Security.Principal.) attach ncipal/>GenericPri 'новый главным образом предмет к в настоящее время предмета HttpContext Context.User = _path LDAPAuthentication типа
LDAPAuthentication.VB
Imports System Imports Microsoft.VisualBasic Imports System.DirectoryServices Imports System.Exception
Namespace SITE
Sub конца principal
общественное приватное как _filterAttribute String приватное по мере того как новая String
общественная Sub(Курс ByVal как шнур) _path = функция IsAuthenticated Sub
конца path общественная (домен ByVal как username шнура, ByVal как pwd шнура, ByVal как шнур) как Boolean
затемняют domainAndUsername как шнур = домен +» \ «+ вход username тусклый по мере того как новое (_path, domainAndUsername, pwd) связь Try /> 'к родному AdsObject для того чтобы принудить authentication. затемняет obj как предмет = поиск entry.NativeObject
тусклый как новое
DirectorySearcher (входа) search.SearchScope = поиск SearchScope.Subtree . Фильтр =» sAMAccountName (CN= " + username + ") «
' = имя. Старое имя logon NT 4.0, должно быть уникально в домене. Смогите быть запутанен с CN. поиск . Фильтр =» (SAMAccountName= " + username + ") « search.PropertiesToLoad.Add («cn») затемняет результат как
SearchResult = search.FindOne () если результат ничего Then
False /> 'новый курс к потребителю в _path = результате directory. . _filterAttribute Path = DirectCast (результат. Задвижка Properties («cn») (0), шнура) ex как ход новое System.Exception System.Exception («потребитель ошибки authenticating. » + ex. Функция GetGroups Function
конца Try
возвращенная True конца сообщения) общественная () как String
затемняет поиск по мере того как новый поиск DirectorySearcher (_path). Фильтр = «(cn=» & _filterAttribute & ") «(««
sAMAccountname» memberOf»)/> d search.PropertiesToLoad.Ad 'search.PropertiesToLoad.Add () затемняет groupNames в новый результат
Try System.Text.StringBuilder () тусклый как SearchResult = propertyCount search.FindOne () тусклое в интежер = результат. Свойства («memberOf»). Count затемняет dn как equalsIndex String тусклое как интежер, commaIndex как Integer
затемняет propertyCounter как интежер = 0 пока propertyCounter < propertyCount dn = DirectCast (результат. equalsIndex Properties («memberOf») (propertyCounter), шнура) = dn.IndexOf («=», commaIndex 1) = dn.IndexOf (», «, 1) если -1 = конец If groupNames.Append, то Then возвращенный Nothing equalsIndex (dn. groupNames.Append Substring ((equalsIndex + 1), (commaIndex - equalsIndex) - 1)) («|") System.Math.Max (System.Threading. Interlocked. Increment (propertyCounter), propertyCounter - задвижка While конца 1) ex как ход новое System.Exception Exception («ошибка получая названия группы. » + ex. Конец Class End Namespace Function конца Try возвращенный groupNames.ToString конца сообщения) ()
class=
|