<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19893458</id><updated>2012-02-16T01:47:37.836-06:00</updated><title type='text'>Learning .NET - Tips &amp; Tricks</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19893458.post-7572197302889822743</id><published>2009-10-20T11:35:00.001-05:00</published><updated>2009-10-20T21:40:06.463-05:00</updated><title type='text'>AJAX Update Panels: Maintain Scroll Position after Postback</title><content type='html'>&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;There are situation when the scroll position of the server controls are lots in a postback, however you can maintain the scroll position using "MaintainScrollPositionOnPostback=True" page attribute, but the problem is when we use Update Panels. This situation gets even worse as we place UpdatePanels in the page and while there's [or seems to be] no postbacks for the page, but still scroll bars reset to zero on each request. &lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;I have found this nice post at:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;a href="http://en.hasheminezhad.com/scrollsaver"&gt;http://en.hasheminezhad.com/scrollsaver&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;I made some modification as below, so as to reset the scroll bars on new search.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #38761d;"&gt;********************************************************&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;lt;script type="text/javascript" language="javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var resetScrollPosition = false;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function beginReq(sender, args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (resetScrollPosition == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.cookie = '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; saveScroll();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //alert(document.cookie);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function endReq(sender, args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loadScroll();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //alert(document.cookie);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function loadScroll() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cookieList = document.cookie.split(';');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; cookieList.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cookieParts = cookieList[i].split('=');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cookieParts[0] == 'scrollPosition') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var values = unescape(cookieParts[1]).split('/');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var j = 0; j &amp;lt; values.length; j++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var currentValue = values[j].split(',');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (currentValue[0] == 'window') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.scrollTo(currentValue[1], currentValue[2]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (currentValue[0]) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var elm = document.getElementById(currentValue[0]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elm.scrollLeft = currentValue[1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elm.scrollTop = currentValue[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ex) { }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function saveScroll() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var s = 'scrollPosition=';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var wl, wt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (window.pageXOffset !== undefined) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wl = window.pageXOffset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wt = window.pageYOffset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (document.documentElement &amp;amp;&amp;amp; document.documentElement.scrollLeft !== undefined) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wl = document.documentElement.scrollLeft;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wt = document.documentElement.scrollTop;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wl = document.body.scrollLeft;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wt = document.body.scrollTop;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (wl || wt) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s += 'window,' + wl + ',' + wt + '/';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var elements = (document.all) ? document.all : document.getElementsByTagName('*');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (var i = 0; i &amp;lt; elements.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var e = elements[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.id &amp;amp;&amp;amp; (e.scrollLeft || e.scrollTop)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s += e.id + ',' + e.scrollLeft + ',' + e.scrollTop + '/';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.cookie = s + ';';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var addEvent, eventPrefix;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (window.attachEvent) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addEvent = window.attachEvent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eventPrefix = 'on';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addEvent = window.addEventListener;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eventPrefix = '';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addEvent(eventPrefix + 'load', function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loadScroll();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (typeof Sys != 'undefined' &amp;amp;&amp;amp; typeof Sys.WebForms != 'undefined') {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endReq);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginReq);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }, false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addEvent(eventPrefix + 'unload', saveScroll, false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;lt;/script&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #38761d;"&gt;********************************************************&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19893458-7572197302889822743?l=prashantaware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/7572197302889822743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19893458&amp;postID=7572197302889822743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/7572197302889822743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/7572197302889822743'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/2009/10/ajax-update-panels-maintain-scroll.html' title='AJAX Update Panels: Maintain Scroll Position after Postback'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19893458.post-3832664493344557399</id><published>2009-10-20T11:27:00.007-05:00</published><updated>2010-03-24T10:17:58.710-05:00</updated><title type='text'>Detecting Browser Refresh</title><content type='html'>&lt;style&gt;  &lt;!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;}@font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; mso-themecolor:hyperlink; text-decoration:underline; text-underline:single;}a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; mso-themecolor:followedhyperlink; text-decoration:underline; text-underline:single;}span.EmailStyle16 {mso-style-type:personal; mso-style-noshow:yes; mso-style-unhide:no; mso-ansi-font-size:11.0pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; color:windowtext;}.MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}@page Section1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;}div.Section1 {page:Section1;}--&gt;&lt;/style&gt;  &lt;br /&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;I have come across the condition where I was saving some data into the database on a button click event. You might have noticed, the same event will raised if you press the browser refresh button(or if you press ‘F5’) immediately after the button click. So every time you refresh the page, this event is raised and a new record will be entered into the database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-size: small;"&gt;While surfing lots of websites, I finally found some couple of solution that will work in this scenario. I am posting all these solutions here&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://csharpdotnetfreak.blogspot.com/2009/09/detect-page-refresh-in-aspnet.html"&gt;http://csharpdotnetfreak.blogspot.com/2009/09/detect-page-refresh-in-aspnet.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://munishbansal.wordpress.com/2008/10/11/detecting-aspnet-browser-refresh/"&gt;http://munishbansal.wordpress.com/2008/10/11/detecting-aspnet-browser-refresh/&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://blenitz.blogspot.com/2007/09/detect-page-refresh-aspnet.html"&gt;http://blenitz.blogspot.com/2007/09/detect-page-refresh-aspnet.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/Detecting_Refresh.aspx"&gt;http://www.codeproject.com/KB/aspnet/Detecting_Refresh.aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://dotnetslackers.com/community/blogs/simoneb/archive/2007/01/06/Using-an-HttpModule-to-detect-page-refresh.aspx" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;http://dotnetslackers.com/community/blogs/simoneb/archive/2007/01/06/Using-an-HttpModule-to-detect-page-refresh.aspx&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19893458-3832664493344557399?l=prashantaware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/3832664493344557399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19893458&amp;postID=3832664493344557399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/3832664493344557399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/3832664493344557399'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/2009/10/deducting-browser-refresh.html' title='Detecting Browser Refresh'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19893458.post-598624877984862529</id><published>2009-10-14T11:34:00.003-05:00</published><updated>2009-10-14T11:49:32.302-05:00</updated><title type='text'>Check if PDF File is loaded</title><content type='html'>&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;this post is applies to all html, .net and other web technologies&lt;br /&gt;&lt;br /&gt;in a very common scenario, when we have to load a PDF file like .. opening a PDF file in iFrames,, there is no way you can fire any event after the pdf file is fully loaded in the web page. But you can word around to implement this:&lt;br /&gt;&lt;br /&gt;*** this is just a concept and not the whole code.&lt;br /&gt;&lt;br /&gt;here in my example, I am trying to load a pdf document into an iFrame and wanted to display a loading image until pdf is fully loaded&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #38761d;"&gt;**********************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; function LoadPDF() {&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var progressImage = document.getElementById("progressImage");&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var iframe = document.getElementById("iFrame");&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; progressImage.style.visibility = 'visible';&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; iframe.src = "http://www.somesite.com/somepdfdocument.pdf"&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; setIntervalId = setInterval(closeProgress, 1000);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; function closeProgress() {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var iframe = document.getElementById("iFrame");&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iframe.document.readyState == "complete") {&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var progressImage = document.getElementById("progressImage");&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; progressImage.style.visibility = 'hidden';&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; clearInterval(setIntervalId);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;center&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;div id="progressImage" class="progressImage" style="visibility: hidden; z-index: 2;"&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; Please wait while the PDF document is being loaded! &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;img src="ajax_loader.gif" /&amp;gt;&amp;nbsp; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;/center&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;iframe id="iFrame" width="500px" height="400px" src="" &amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;/iframe&amp;gt; &lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt; &lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;lt;input type="button" value="Show PDF" onClick="LoadPDF();"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #38761d;"&gt;**********************************************************************************&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19893458-598624877984862529?l=prashantaware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/598624877984862529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19893458&amp;postID=598624877984862529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/598624877984862529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/598624877984862529'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/2009/10/check-if-pdf-file-is-loaded.html' title='Check if PDF File is loaded'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19893458.post-303446324244970900</id><published>2009-10-12T16:03:00.001-05:00</published><updated>2009-10-12T16:05:00.931-05:00</updated><title type='text'>Load Balancing in ASP.NET</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;This is one good article I have found to resolve load balancing problems with asp.net aplications. The original URL for this article is:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx"&gt;&lt;b&gt;http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Scope:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;Considering the high volume of traffic the Web site uses two or more servers needed to handle user requests. The concept behind the web farm is that a number of different web sites share pooled resources. They typically share a common front-end dispatcher to perform load control and distribute customer requests. They share the multiple web servers themselves. Based on &lt;/span&gt;&lt;span style="font-size: small;"&gt;experience &lt;/span&gt;&lt;span style="font-size: small;"&gt;and with reference to Microsoft sites this document was created to address certain issues faced in web farm while using ASP.NET.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Machine Key:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;Consider a scenario while doing a PostBack in ASP.NET and which looses the form information.&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;For Example:&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;When a user selects an item from a DropDownList and then clicks a submit button, the Click event on the button redirects them to the value of the selected item. This works fine if you are on Webserver1 and the button click PostBacks to Webserver1. If you are on Webserver1 and the load balance submits back to Webserver2, the page reloads and the Button click event never fires. This happen site wide and affects utilities such as submitting a textbox search and other form posting events.&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Approach 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;You can modify the pages element in In machine.config of both the servers:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: blue; font-size: small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon; font-size: small;"&gt;system.web&lt;/span&gt;&lt;span style="color: blue; font-size: small;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon;"&gt;pages&lt;/span&gt; &lt;span style="color: red;"&gt;enableViewStateMac&lt;/span&gt;&lt;span style="color: blue;"&gt;="false"&lt;/span&gt; &lt;span style="color: blue;"&gt;/&amp;gt;&lt;/span&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: maroon; font-size: small;"&gt;system.web&lt;/span&gt;&lt;span style="color: blue; font-size: small;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;EnableViewStateMac indicates that ASP.NET should run a machine authentication check (MAC) on the page's view state when the page is posted back from the client;&lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;True - if view state should be MAC checked&lt;br /&gt;False - We need to ensure that it is kept to false.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Approach 2&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;Force every server in your farm to use the same key; generate a hex encoded 64-bit or 128-bit &lt;machinekey&gt; and put that in each server's machine.config.&lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/machinekey&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Example:&lt;/b&gt; &lt;don't below="" key="" the="" use=""&gt; &lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/don't&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: blue; font-size: small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon; font-size: small;"&gt;machineKey&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;validationKey&lt;/span&gt;&lt;span style="color: blue;"&gt;='A130E240DF1C49E2764EF8A86CEDCBB11274E5298A130CA08B90EED016C0&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: blue;"&gt;14CEAE1D86344C29E67E99DF83347E43820050A2B9C9FC89E0574BF3394B6D0401A9'&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;decryptionKey&lt;/span&gt;&lt;span style="color: blue;"&gt;='2CC37FFA8D14925B9CBCC0E3B1506F35066FEF33FEB4ADC8'&lt;/span&gt; &lt;span style="color: red;"&gt;validation&lt;/span&gt;&lt;span style="color: blue;"&gt;='SHA1'/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;You can generate a key from &lt;br /&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: black; font-size: small;"&gt;&lt;a href="http://www.eggheadcafe.com/articles/GenerateMachineKey/GenerateMachineKey.aspx"&gt;&lt;span style="color: black; text-decoration: none;"&gt;&lt;u&gt;http://www.eggheadcafe.com/articles/GenerateMachineKey/GenerateMachineKey.aspx&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: black; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: black; font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: black; font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Session Management:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;ASP.NET provides two solutions for sharing state information between multiple servers:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;ol style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin-top: 0in;" type="1"&gt;&lt;span style="font-size: small;"&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;The ASP.NET State Server service&lt;o:p&gt;&lt;/o:p&gt;  &lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Microsoft SQL Server.&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;h1 style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;State Server&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;In a web farm, make sure you have the same &lt;machinekey&gt; in all your web servers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/machinekey&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;q3103091&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;For session state to be maintained across different web servers in the web farm, the application path of the website (for example. \LM\W3SVC\2) in the IIS metabase should be identical in all the web servers in the web farm. &lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;q325056&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Make sure objects are serializable. Here in state server session gets serialized and stored in memory in a separate process (aspnet_state.exe).&amp;nbsp;Also if you try to store instance of a class that is not marked as serializable into a session variable, the request returns without an error. However, Asp.net actually fails to save the session data and blocks subsequent requests in the same session. (Because the class is not marked as serializable).&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;SQL Server&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Make sure objects are serializable (as like above).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;If you specify integrated security in the connection string (For example "trusted_connection= true", or "integrated security=sspi") it won't work also if you turn on impersonation in asp.net. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;For session state to be maintained across different web servers in the web farm, the application path of the website (for example. \LM\W3SVC\2) in the IIS metabase should be identical in all the webservers in the web farm. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; text-align: justify; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Using SQL Server to Store ASP.NET Session State:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Run the InstallSqlState.sql script on the Microsoft SQL Server where you intend to store session state. This script will create the necessary database and database objects. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;The .NET Framework installs this script in the same folder as its compilers and other tools. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;For example:&lt;/b&gt; C:\WINNT\Microsoft.NET\Framework\v1.0.3705 on a Windows 2000 computer with the 1.0 version of the Framework.  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Edit the sessionState element in the web.config file for your ASP.NET application as follows: &lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: blue; font-size: small;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon; font-size: small;"&gt;sessionState&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;span style="color: red;"&gt;mode&lt;/span&gt;&lt;span style="color: blue;"&gt;="SQLServer"&lt;/span&gt; &lt;span style="color: red;"&gt;StateConnectionString&lt;/span&gt;&lt;span style="color: blue;"&gt;="tcpip=127.0.0.1:42424"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: red; font-size: small;"&gt;SqlConnectionString&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;span style="color: blue;"&gt;=&lt;/span&gt; &lt;span style="color: blue;"&gt;"data source=SERVERNAME; user id=sa; password=sa"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: red; font-size: small;"&gt;cookieless&lt;/span&gt;&lt;span style="color: blue; font-size: small;"&gt;="false"&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;span style="color: red;"&gt;timeout&lt;/span&gt;&lt;span style="color: blue;"&gt;="20"&lt;/span&gt; &lt;span style="color: blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="color: blue; font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Supply the server name, user name, and password for a SQL Server account that has access to the session state database in the sqlConnectionString attribute. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Steps to run the InstallSqlState.sql and the UninstallSqlState.sql script files to configure SQL Server mode session state management. &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;In SQL Query Analyzer, on the File menu, click Open. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;In the Open Query File dialog box, browse to the InstallSqlState.sql script file, and then click Open. By default, InstallSqlState.sql is located in one of the following folders:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;system drive\Windows\Microsoft.NET\Framework\version\ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;After InstallSqlState.sql opens in SQL Query Analyzer, click Execute on the Query menu to run the script. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;Before you run the UninstallSqlState.sql script file to uninstall SQL Server mode session state management configuration, you must stop the w3svc process. To do this, follow these steps: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin-top: 0in;" type="disc"&gt;&lt;span style="font-size: small;"&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;On the Windows Start menu, click Run, type cmd, and then click OK to open a command prompt. &lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;At the command prompt, type net stop w3svc. You receive confirmation that the w3svc process is stopped. &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;In SQL Query Analyzer, on the File menu, click Open. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;In the Open Query File dialog box, browse to the UninstallSqlState.sql script file, and then click Open. By default, UninstallSqlState.sql is located in one of the following folders:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;system drive\Windows\Microsoft.NET\Framework\version\ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;After UninstallSqlState.sql opens in SQL Query Analyzer, click Execute on the Query menu to run the script. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;After you uninstall SQL Server mode session state management configuration, you must restart the w3svc service. To restart the w3svc process, type net starts w3svc at a command prompt.&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Security Considerations Sql Server [Session]:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;The following aspects need to be kept in mind: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;ul style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin-top: 0in;" type="disc"&gt;&lt;span style="font-size: small;"&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Use Windows authentication to the database &lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Encrypt sqlConnectionString &lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Limit the application's login in the database &lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Secure the channel &lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Caching Considerations:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;There are three options explained below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;ol style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;" type="1"&gt;&lt;span style="font-size: small;"&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Synchronizing all servers in web farm &lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;Centralized Cache location to be maintained. &lt;o:p&gt;&lt;/o:p&gt; &lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;SQL server caching&lt;o:p&gt;&lt;/o:p&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;1. Synchronizing all servers in web farm&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;By providing a wrapper class simply having a CacheControl.aspx receiver page in each of the Applications, it is possible to send a WebRequest to each of the machines (maintained in an easy-to-configure web.config AppSettings element) and have each enabled with code to do its own update "on demand".&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;So, whenever add a "real" item to the Cache, it will also create a new populated instance of the same class, serialize it into a compact byte stream, and iterate through our server list sending it over the wire via the WebRequest so that each app in the farm, WebGarden, etc can receive and deserialize it, and update its own Cache. Simple, elegant, and fast! Even if it is a complex object such as a class that you have added to your Cache, provided that it is serializable, it will work.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;2. Centralized Cache location&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;One Cache-application is to be created, which will take care of the caching and returning the cached items. And that is to be placed in centralized location.&amp;nbsp;All applications should send the data to be cached, to that cache-application.&amp;nbsp;The Cache-application will store the data. When any application requests the cached data, it will be retrieved from the Cache-application. (The centralized Cache-application can be called with credentials.)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;3. SQL server caching&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;SQL Server caching is easy to implement by using ADO.NET and the .NET Framework, and it provides a common development model to use with existing data access components. It provides a robust security model that can easily be configured to work across a Web farm using SQL Server replication.&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;If the application requires cached data to persist across process recycles, reboots, and power failures, in-memory cache is not an option. In such cases, Caching mechanism based on a persistent data store, such as SQL Server or the NTFS file system. It also makes sense to use SQL Server to cache smaller data items to gain persistency.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;Because the cache service needs to access SQL Server over a network and the data is retrieved using database queries, the data access is relatively slow. We need to carefully compare the cost of recreating the data versus retrieving it from the database.&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;NLB(Network Load Balancing):&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Network Load Balancing_NLB is a network driver that distributes the load for networked client/server applications across multiple c luster servers. Network Load Balancing works by distributing client requests across a set of servers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Shopping cart contents at an e-commerce site and Secure Sockets Layer (SSL) authentication data are examples of a client's session state. Network Load Balancing can be used to scale applications that manage session state spanning multiple connections. When its client affinity parameter setting is enabled, Network Load Balancing directs all TCP connections from one client IP address to the same cluster host. This allows session state to be maintained in host memory. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;NLB provides the client affinity parameter, which, when enabled, basically makes you "always come back to the server you landed on first", thereby insuring that your Session and Application variables don't get thrown away. Use the client affinity feature. When client affinity is enabled, Network Load Balancing directs all TCP connections to the same cluster host. This allows session state to be maintained in host memory. You can enable client affinity in the Add/Edit Port Rules dialog box in Network Load Balancing Manager. Choose either Single or Class C affinity to ensure that only one cluster host will handle all connections that are part of the same client session. This is important if the server application running on the cluster host maintains session state (such as server cookies) between connections.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;Network Load Balancing, a clustering technology included in the Microsoft Windows 2000 Advanced Server and Datacenter Server operating systems, enhances the scalability and availability of mission-critical, TCP/IP-based services, such as Web, Terminal Services, virtual private networking, and streaming media servers. This component runs within cluster hosts as part of the Windows 2000 operating system and requires no dedicated hardware support. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Other Tasks:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Request distribution&lt;/b&gt;: Incoming HTTP requests must be distributed among all servers by using a mechanism such as round-robin DNS, Microsoft Application Center 2000, or a third-party load distribution device. &lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Log aggregation&lt;/b&gt;: Before you process HTTP usage logs, it is a good idea to combine the logs to create a single log that includes requests sent to all systems. &lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Monitoring&lt;/b&gt;: To detect problems that affect a single server or the whole site, you must monitor both the external URL for the site and the URLs for each of the Web servers. &lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Scheduler&lt;/b&gt;:&amp;nbsp; Scheduling an event to occur on a single server should cause only that one server to run the task. Scheduling an event to occur on all servers should cause all servers to run the task. [Updations need to be done and should get reflected in all servers hence scheduler should appropriately picked-up]&lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Centralized database&lt;/b&gt;: Web applications that use a database must have a single database that is shared between multiple Web servers. In environments that require no single point of failure, cluster the database server.&lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 12pt; vertical-align: top;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Synchronize Configuration and Content:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;You need to ensure that the config files are present in the right path on all the servers, and that their contents are continuously in sync.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;You can copy configuration files to servers by using any standard file copy or synchronization method, including DFS, the File Replication service, and Microsoft Application Center 2000. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;The following batch file will work in environments where each Web server has the virtual server root folder shared as:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="headingfaq" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;wwwroot$: XCOPY &lt;/span&gt;&lt;a href="file:///wwwroot$"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;\\source-server\wwwroot$&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;a href="file:///"&gt;&lt;span style="color: black;"&gt;\\destination-server#\wwwroot$&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;\D\E\O\X&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;When you deploy configuration information and ASP.NET content to multiple servers, it is critical to deploy the content from a single staging server to all production servers at the same time. This reduces the chance of problems occurring when a user's requests are sent to different servers. Microsoft recommends that all configuration and content updates occur on the staging server. Ideally, this staging server does not receive requests from users. It is dedicated to the task of testing and deploying new content.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; margin: 0in 0in 0pt;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19893458-303446324244970900?l=prashantaware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx' title='Load Balancing in ASP.NET'/><link rel='replies' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/303446324244970900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19893458&amp;postID=303446324244970900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/303446324244970900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/303446324244970900'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/2009/10/load-balancing-in-aspnet.html' title='Load Balancing in ASP.NET'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19893458.post-4897426143779962496</id><published>2009-10-07T16:48:00.001-05:00</published><updated>2009-10-07T16:49:13.805-05:00</updated><title type='text'>Closing self browser window without prompt</title><content type='html'>&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;You might have faced this issue while closing the browser window using javascript and without showing the prompt. Normally when you try to close a parent browser using window.close() it will give you a prompt whether to close the window or not. But in order to avoid the popup, we let the browser thinks that the current window is opened using javascript, so when the window.close() is executed it will close it without the promot being displayed.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(207, 207, 207);"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;&amp;lt;script language="javascript"&amp;gt;&lt;br /&gt;    function CloseWindow()&lt;br /&gt;    {&lt;br /&gt;       window.open('','_self','');&lt;br /&gt;       window.close();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;input type="button" onclick="CloseWindow();" value="Close Window"&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19893458-4897426143779962496?l=prashantaware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/4897426143779962496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19893458&amp;postID=4897426143779962496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/4897426143779962496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/4897426143779962496'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/2009/10/closing-self-browser-window-without.html' title='Closing self browser window without prompt'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19893458.post-786552980566680321</id><published>2009-09-19T15:37:00.003-05:00</published><updated>2009-09-19T15:41:19.197-05:00</updated><title type='text'>View Answers on Experts-Exchange.com for FREE !!!</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Found a quick solution for you problem in experts-exchange forum, and dont have login or premium membership to view the answer.. that will be too frustrating. You know the answer if infront&amp;nbsp; of you but you cannot view.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;If you go on experts-exchange.com and search for a problem. The site wont let you see the answer. But here is one cool trick. If you visit this site from a link from google search results, this site will allow you to view the answer for free, just scroll down the page till the bottom and you will see the posted answer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Search a problem on experts-exchange.com and then copy the topic and search on google.. and click on the experts-exchange link form google search results. Quick and Easy !!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Reference:&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;"&gt;&lt;a href="http://techie-buzz.com/hacks-and-mods/view-experts-exchange-solutions-free.html"&gt;&lt;span style="font-size: small;"&gt;http://techie-buzz.com/hacks-and-mods/view-experts-exchange-solutions-free.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.experts-exchange.com/"&gt;http://www.experts-exchange.com&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19893458-786552980566680321?l=prashantaware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/786552980566680321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19893458&amp;postID=786552980566680321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/786552980566680321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/786552980566680321'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/2009/09/view-experts-exchange-answers-for-free.html' title='View Answers on Experts-Exchange.com for FREE !!!'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19893458.post-9029108064820551745</id><published>2009-09-14T13:54:00.006-05:00</published><updated>2009-09-16T15:57:12.760-05:00</updated><title type='text'>Manually starting ASP.NET Web Development Server (WebDev.WebServer.exe)</title><content type='html'>&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;No IIS ? You can start any folder as a WebServer url from the windows explorer (without even starting Visual Studio). The tick involve some registry changes and a simple vbscript. Here is the trick:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;copy and paste the below code into notepad and save as &lt;span style="color: blue;"&gt;WebDev.WebServer.vbs&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Copy this file to any folder you like&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;REM ******************************************************&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;DIM port, command&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;If Wscript.Arguments.Count = 0 Then&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; WScript.Quit(0)&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;Else&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; Set objRandom = CreateObject( "System.Random" )&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; port=objRandom.Next_2( 1, 32000 )&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; Set wshShell = WScript.CreateObject ("WSCript.shell")&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; command = """C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.EXE"" /path:""" &amp;amp; Wscript.Arguments(0) &amp;amp; """ /port:" &amp;amp; port&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote style="font-family: 'Courier New',Courier,monospace;"&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; wshShell.run command, 0, False&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; wshShell.run "http://localhost:" &amp;amp; port, 1, False&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp; set wshshell = nothing&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue;"&gt;&lt;span style="font-size: small;"&gt;End If&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #38761d;"&gt;&lt;span style="font-size: small;"&gt;REM ******************************************************&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;now editing the registry settings for context menu in windows explorer:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;open registry editor (RUN &amp;gt;&amp;gt; &lt;span style="color: blue;"&gt;REGEDIT&lt;/span&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;navigate to &lt;span style="color: blue;"&gt;HKEY_CLASSES_ROOT\Directory\shell&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;create a new key under shell with name: &lt;span style="color: blue;"&gt;WebServer&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;than edit the (Default) string and enter: &lt;span style="color: blue;"&gt;Start a WebServer here&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;create another key under WebServer with name: &lt;span style="color: blue;"&gt;command&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;than edit the (Default) string and enter: &lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;C:\WINDOWS\System32\WScript.exe C:\WebDev.WebServer.vbs "%1"&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;close registry editor and open windows explorer. Right-click any Web Application folder and select "Start a WebServer here"... this will create a random port and open the localhost url pointing the virtual directory to this folder.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Trebuchet MS',sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19893458-9029108064820551745?l=prashantaware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://prashantaware.blogspot.com/feeds/9029108064820551745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19893458&amp;postID=9029108064820551745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/9029108064820551745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19893458/posts/default/9029108064820551745'/><link rel='alternate' type='text/html' href='http://prashantaware.blogspot.com/2009/09/start-webdevwebserver-from-contect-menu.html' title='Manually starting ASP.NET Web Development Server (WebDev.WebServer.exe)'/><author><name>Prashant Aware</name><uri>http://www.blogger.com/profile/01017252982295402080</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
