<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Blog du Tristank : Developery</title><link>http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx</link><description>Tags: Developery</description><dc:language>en-AU</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Don’t Use Office Applications (or GDI+, or System.Drawing, or WinInet) in a Server Application (or ASP.Net)</title><link>http://blogs.technet.com/tristank/archive/2008/11/06/don-t-use-office-applications-or-gdi-or-system-drawing-or-wininet-in-a-server-application-or-asp-net.aspx</link><pubDate>Thu, 06 Nov 2008 10:03:22 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3148329</guid><dc:creator>tristank</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/tristank/comments/3148329.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=3148329</wfw:commentRss><description>&lt;p&gt;Johan posted a timely reminder of a long-standing perennial support call generator in his post &lt;a title="Office Automation" href="http://blogs.msdn.com/johan/archive/2008/10/14/office-automation.aspx"&gt;Office Automation&lt;/a&gt; .&lt;/p&gt;  &lt;p&gt;Adding one more option to the list of possible workarounds – direct XML-based production/manipulation of an &lt;a href="http://msdn.microsoft.com/en-us/library/aa338205.aspx#office2007aboutnewfileformat_developingsolutionsusingtheoffice"&gt;OOXML&lt;/a&gt; (or ODF, for that matter) document (Word, Excel, Powerpoint?) might get you where you need to go. &lt;/p&gt;  &lt;p&gt;Now, to get the laundry list out of the way, here’s a quick top-of-the-head list of other technologies best kept away from your shiny new ASP.Net application:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Outlook automation on the server isn’t a good idea at all, which is why CDO (or these days, DAV for Exchange Server) is preferred.&lt;/li&gt;    &lt;li&gt;The Word/Excel/Powerpoint/Outlook programmable Object Models typically drive the application itself rather than manipulating data files directly, so should be avoided too.&lt;/li&gt;    &lt;li&gt;Tom posted a while back on &lt;a href="http://blogs.msdn.com/tom/archive/2008/03/19/gdi-gdiplus-and-asp-net.aspx"&gt;the perils of System.Drawing/GDI+&lt;/a&gt; in ASP.Net applications. The same goes for WPF, last I heard.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;We do use System.Drawing as a demo of in some of our IIS 7 demos (most recently seen in the &lt;a href="http://channel9.msdn.com/pdc2008/ES14/"&gt;PDC IIS 7 demo&lt;/a&gt; that included watermarking using System.Drawing), and elsewhere – it’s an effective demo, but the caveats are as documented.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa385331.aspx"&gt;WinInet&lt;/a&gt; (the core HTTP engine used by Internet Explorer) is another old, old case of the same designed-for-client paradigm (which led to the creation of WinHTTP (and in .Net land, HttpWebRequest etc)).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I’m not saying any of the above don’t &lt;em&gt;typically&lt;/em&gt; work - most of the time, whatever you’re doing might work fine (I personally wrote a bunch of charting and drawing controls years ago in ASP.Net before discovering this), but &lt;em&gt;when it doesn’t, our options are limited in how we’re able to help.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3148329" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item><item><title>.HDMP and .MDMP files</title><link>http://blogs.technet.com/tristank/archive/2008/09/23/hdmp-and-mdmp-files.aspx</link><pubDate>Tue, 23 Sep 2008 11:12:27 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127079</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/3127079.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=3127079</wfw:commentRss><description>&lt;p&gt;Just a quickie – the rule is blog what you know, but I figure my speculation might be good enough here.&lt;/p&gt;  &lt;p&gt;A friend gave me an HDMP file and asked what I could make of it. After the usual “I could make a hat! Or a brooch! Or a dinosaur!” type stuff, I realized it wouldn’t open anyway.&lt;/p&gt;  &lt;p&gt;In my experience, most .HDMPs come with matching .MDMP files. I think of these as Minidumps (in the “real” mini sense – just information about threads and thread stacks), and Heap dumps (everything else the process knew or cared about in User mode).&lt;/p&gt;  &lt;p&gt;This HDMP wasn’t openable in the debugger directly, but if its corresponding MDMP was present in the same folder at the same time, I reckon it woulda.&lt;/p&gt;  &lt;p&gt;The feared WER-wolf produces these files in pairs (that’s Windows Error Reporting, kids, don’t be too scared, except that it invalidates everything we used to know about AEDebug registry keys and similar, but that’s another story for another time), and that’s how I’ve analyzed them in the past. I remember hearing of some sort of merge operation that needed to happen between M and H dumps, but I’m reasonably certain I haven’t bothered with that (I assume I’m lazy by default), so I think the debugger just does it for ya.&lt;/p&gt;  &lt;p&gt;Now I’ve written that, I’m going to go look for references to support my assertions!&lt;/p&gt;  &lt;p&gt;949180&amp;#160;&amp;#160;&amp;#160; How to create a user-mode process dump file in Windows Server 2008   &lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;949180"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;949180&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(At the bottom – mini and heap dumps - yay me!). Think that’s enough for today. Hugs!&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127079" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.technet.com/tristank/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>Mesh Gush</title><link>http://blogs.technet.com/tristank/archive/2008/08/20/mesh-gush.aspx</link><pubDate>Wed, 20 Aug 2008 11:15:46 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3108892</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/3108892.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=3108892</wfw:commentRss><description>&lt;p&gt;Hi Everybody! I've been laying low for a while, in read-only mode, sorting, filtering, evaluating and generally catching up on stuff!&lt;/p&gt; &lt;p&gt;So, why break radio silence now? Well, I'm popping up to offer a quick endorsement for the &lt;a href="www.mesh.com"&gt;Mesh&lt;/a&gt; platform, which was recently opened up to Australian testers.&lt;/p&gt; &lt;p&gt;I'm excited. I love it, and it's not even finished.&lt;/p&gt; &lt;p&gt;Right now, you could liken it to &lt;a href="http://www.foldershare.com/"&gt;Foldershare&lt;/a&gt; plus &lt;a href="http://skydrive.live.com"&gt;Skydrive&lt;/a&gt; plus Remote Desktop, just with the out-of-the-box stuff in the preview.&lt;/p&gt; &lt;p&gt;But there's more to come, and the glimpse you get is absolutely &lt;em&gt;compelling&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;I love that I'm a mouse-over and click away from Remote Desktop to any of my machines.&lt;/p&gt; &lt;p&gt;I love that I can synchronize folders between any number of my devices, and have a copy kept online in my Live Desktop.&lt;/p&gt; &lt;p&gt;I love that it's a platform, and having seen some &lt;a href="http://channel9.msdn.com/posts/Dan/Ori-Amiga-Programming-the-Mesh/"&gt;demos of what's possible from a programming perspective&lt;/a&gt;, I can't wait to get my SDK on!&lt;/p&gt; &lt;p&gt;At present, there are some To Be Implemented features, the odd glitch and so on (as you'd expect from a CTP), so feel free to ignore me for a while, I'll just say "told you so" later! :)&lt;/p&gt; &lt;p&gt;One tip I'll pass on: Quite a few people requested a versioning feature for files and folders in the &lt;a href="http://forums.community.microsoft.com/en/LiveMesh/threads/"&gt;Mesh forums&lt;/a&gt; (and note that right now, folders you share with other people are writable by them) - Windows Vista has this built in already, in the form of the Previous Versions feature that you can use to recover a document in a given folder - just get the Properties, and then check the Previous Versions tab for the folder (or document).&lt;/p&gt; &lt;p&gt;Go get a &lt;a href="http://www.mesh.com"&gt;Mesh&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3108892" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/Aussie/default.aspx">Aussie</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Vista/default.aspx">Windows Vista</category></item><item><title>Generic Troubleshooting: "Is it still a problem?"</title><link>http://blogs.technet.com/tristank/archive/2008/04/28/generic-troubleshooting-is-it-still-a-problem.aspx</link><pubDate>Mon, 28 Apr 2008 09:38:05 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3046172</guid><dc:creator>tristank</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/tristank/comments/3046172.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=3046172</wfw:commentRss><description>&lt;p&gt;I've been doing this support thing for a while now.&lt;/p&gt;  &lt;p&gt;Frequently, the basics are what get overlooked when troubleshooting an issue, particularly an issue that seems complex on the surface.&lt;/p&gt;  &lt;p&gt;Often, though, you'll find that the detailed techniques lead you back to a fairly basic set of rules, the most basic of which is:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Everything's either a file issue, or a settings issue, or just how the software works (by bug or by design).&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If something seems unlikely to be a file (corrupted or incorrect file) or settings issue, it could easily be a bug (that is, given the same conditions, you'll be able to reach the same outcome). But if you think you might have hit a bug, what's the most efficient way of addressing it?&lt;/p&gt;  &lt;p&gt;Obviously, &lt;em&gt;to find someone else has addressed it already!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So, the &lt;strong&gt;Temporal rule of Troubleshooting&lt;/strong&gt;: &lt;strong&gt;try it with the most recent version available&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;(this doesn't necessarily mean &amp;quot;try Word 2007 if 2003 doesn't work&amp;quot;, I mean &amp;quot;within the same major version&amp;quot;).&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Today, for example, I was looking at a memory dump (which you usually tend to do at the pointy end of a troubleshooting process, and I'm not going to show working or why these two are relevant), and found these *cough* classics:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;0:000&amp;gt; lmvm&lt;strong&gt;urlmon&lt;/strong&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Loaded symbol image file: urlmon.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Image path: C:\WINNT\system32\urlmon.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Image name: urlmon.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Timestamp:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#ff0000"&gt;Wed Aug 04 17:56:37 2004&lt;/font&gt; (411096B5)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; File version:&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6.0.2900.2180      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Product version:&amp;#160; 6.0.2900.2180      &lt;br /&gt;...      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CompanyName:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft Corporation      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ProductName:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft&amp;#174; Windows&amp;#174; Operating System      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; InternalName:&amp;#160;&amp;#160;&amp;#160;&amp;#160; UrlMon.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OriginalFilename: UrlMon.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ProductVersion:&amp;#160;&amp;#160; 6.00.2900.2180      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FileVersion:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 6.00.2900.2180 (xpsp_sp2_rtm.040803-2158)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FileDescription:&amp;#160; OLE32 Extensions for Win32      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LegalCopyright:&amp;#160;&amp;#160; &amp;#169; Microsoft Corporation. All rights reserved.&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;0:000&amp;gt; lmvm&lt;strong&gt;msxml3&lt;/strong&gt;      &lt;br /&gt;start&amp;#160;&amp;#160;&amp;#160; end&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; module name      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Loaded symbol image file: msxml3.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Image path: C:\WINNT\system32\msxml3.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Image name: msxml3.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Timestamp:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;font color="#ff0000"&gt;Wed Aug 04 17:59:24 2004&lt;/font&gt; (4110975C)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CheckSum:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00138815      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ImageSize:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 00130000      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; File version:&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8.50.2162.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Product version:&amp;#160; 8.50.2162.0      &lt;br /&gt;...      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CompanyName:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft Corporation      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ProductName:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft(R) MSXML 3.0 SP 5      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; InternalName:&amp;#160;&amp;#160;&amp;#160;&amp;#160; MSXML3.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OriginalFilename: MSXML3.dll      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ProductVersion:&amp;#160;&amp;#160; 8.50.2162.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FileVersion:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 8.50.2162.0      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FileDescription:&amp;#160; MSXML 3.0 SP 5      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LegalCopyright:&amp;#160;&amp;#160; Copyright (C) Microsoft Corporation. 1981-2003&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What does that tell me? Well, lots! Like: this particular machine isn't up to date on IE and XML security patches. Internet Explorer security patches are cumulative, so installing one tends to refresh the majority of the browser software (side bonus: this can also resolve file-level issues, like a corrupted or incorrect DLL).&lt;/p&gt;  &lt;p&gt;From that, you can infer that it's probably not up to date on a bunch of stuff. We make it pretty easy to apply security updates these days, and if the security patches aren't up to date, chances are there are non-security patches missing too, and so on.&lt;/p&gt;  &lt;p&gt;So: My standard response to any binary implicated in a reproducible problem is to &lt;strong&gt;look for and then apply the latest version available&lt;/strong&gt; (from memory, urlmon was updated this month, and msxml3 sometime since mid-2007).&lt;/p&gt;  &lt;p&gt;Once we've applied the latest updates, we'll know whether we actually have more work to do, or whether we're just covering old ground. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So, short version: Try the latest version first.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;See the big potential time saving there?&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3046172" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.technet.com/tristank/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>IIS7 Modules Aplenty - WebDAV, Bitrate Throttling</title><link>http://blogs.technet.com/tristank/archive/2008/03/15/iis7-modules-aplenty-webdav-bitrate-throttling.aspx</link><pubDate>Sat, 15 Mar 2008 14:51:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3002477</guid><dc:creator>tristank</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.technet.com/tristank/comments/3002477.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=3002477</wfw:commentRss><description>&lt;P&gt;New modules, supported by Microsoft, are now officially RTMd (RTWd?) and available for use with IIS 7.0. &lt;/P&gt;
&lt;H3&gt;WebDAV&lt;/H3&gt;
&lt;P&gt;Yay new WebDAV! Yay being able to enable it on specific parts of a site! Yay better!&lt;/P&gt;
&lt;P&gt;Robert: &lt;A title=http://blogs.msdn.com/robert_mcmurray/archive/2008/03/12/webdav-extension-for-windows-server-2008-rtm-is-released.aspx href="http://blogs.msdn.com/robert_mcmurray/archive/2008/03/12/webdav-extension-for-windows-server-2008-rtm-is-released.aspx" mce_href="http://blogs.msdn.com/robert_mcmurray/archive/2008/03/12/webdav-extension-for-windows-server-2008-rtm-is-released.aspx"&gt;http://blogs.msdn.com/robert_mcmurray/archive/2008/03/12/webdav-extension-for-windows-server-2008-rtm-is-released.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Downloads&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft WebDAV Extension for IIS 7.0 (x86)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;A href="http://www.iis.net/go/1621/" mce_href="http://www.iis.net/go/1621/"&gt;http://www.iis.net/go/1621/&lt;/A&gt; &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft WebDAV Extension for IIS 7.0 (x64)&lt;A href="http://www.iis.net/go/1618/" mce_href="http://www.iis.net/go/1618/"&gt;http://www.iis.net/go/1618/&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Media Bitrate Throttling&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Yay something about bandwidth for media files!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Vishal:&lt;/STRONG&gt; &lt;A href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx" mce_href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx"&gt;http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Downloadies:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;· 32 bit – &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1640" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1640"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1640&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;· 64 bit – &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1641" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1641"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1641&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;STRONG&gt;Intro&lt;/STRONG&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;The Internet Information Services 7.0 (IIS 7.0) Media Pack – Bit Rate Throttling module provides the ability to &lt;STRONG&gt;throttle progressive downloads of media files&lt;/STRONG&gt; (in which audio/video playback starts as soon as sufficient data has been buffered on the client) based on the &lt;STRONG&gt;content bit rate&lt;/STRONG&gt;. For sites that deliver audio and video files that may not be watched in their entirety, this module&lt;/EM&gt; &lt;EM&gt;&lt;STRONG&gt;could significantly reduce your media-related bandwidth costs&lt;/STRONG&gt;. A secondary feature of the Bit Rate Throttling Module is that it &lt;STRONG&gt;can also be used to throttle non-media ("Data") file types at specified bit rates&lt;/STRONG&gt;.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;&lt;STRONG&gt;Don't Forget The New FTP Server While You're At It&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;I already mentioned this, but I'll list it here as a one-stop convenience (aww, aren't I nice?)&lt;/P&gt;
&lt;P&gt;Replaces FTP6 (that shipped in the box) with FTP7: FTP with SSL, virtual hostname support, extensibility, right-click-and-add-FTP-to-a-website publishing integration... loads of cool stuff.&lt;/P&gt;
&lt;LI&gt;&lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1619&amp;amp;g=6" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1619&amp;amp;g=6"&gt;Microsoft FTP Publishing Service for IIS 7.0 (x86)&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1620&amp;amp;g=6" mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;i=1620&amp;amp;g=6"&gt;Microsoft FTP Publishing Service for IIS 7.0 (x64)&lt;/A&gt; &lt;/LI&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3002477" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>MaxUserPort - what it is, what it does, when it's important</title><link>http://blogs.technet.com/tristank/archive/2008/03/11/maxuserport-what-it-is-what-it-does-when-it-s-important.aspx</link><pubDate>Tue, 11 Mar 2008 09:17:57 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2986729</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/2986729.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=2986729</wfw:commentRss><description>&lt;p&gt;What can we say about &lt;strong&gt;MaxUserPort&lt;/strong&gt; that hasn't already been said? Not a lot, it would seem. He's a beautiful dancer, perhaps? Ahh, such gentle humour, and nary a kitten drowned anywhere.&lt;/p&gt;  &lt;p&gt;But TCP port shenanigans are fairly frequently misunderstood, so let's talk about the very basics of MaxUserPort.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;NB: This is all pre-Vista behaviour - applicable from NT4 through to Windows Server 2003, including all the little NT-flavoured stops on the way.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;MaxUserPort controls &amp;quot;outbound&amp;quot; TCP connections&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://technet2.microsoft.com/windowsserver/en/library/730fb465-d402-4853-bacc-16ba78e9fcc01033.mspx?mfr=true"&gt;MaxUserPort&lt;/a&gt; is used to limit the number of dynamic ports available to TCP/IP applications.&lt;/p&gt;  &lt;p&gt;It's &lt;em&gt;never&lt;/em&gt; going to be an issue affecting inbound connections. &lt;em&gt;MaxUserPort is not the right answer if you think you have an inbound connection problem.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;(I don't know &lt;em&gt;why&lt;/em&gt;, I just know it &lt;em&gt;is&lt;/em&gt;. Probably something to do with constraining resource use on 16MB machines, or something.)&lt;/p&gt;  &lt;p&gt;To further simplify: it's typically going to limit the number of &lt;strong&gt;outbound&lt;/strong&gt; sockets that can be created. Note: that's really a big fat generalization, but it's one that works in 99% of cases.&lt;/p&gt;  &lt;p&gt;If an application asks for the next available &lt;em&gt;socket&lt;/em&gt; (a socket is a combination of an IP address and a port number), it'll come from the &lt;em&gt;ephemeral&lt;/em&gt; port range allowed by MaxUserPort. Typically, these &amp;quot;next available&amp;quot; sockets are used for outbound connections.&lt;/p&gt;  &lt;p&gt;The default range for MaxUserPort is from 1024-5000, but the &lt;em&gt;possible&lt;/em&gt; range is up to 65534.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;When You Fiddle MaxUserPort&lt;/h3&gt;  &lt;p&gt;So, why would you change MaxUserPort?&lt;/p&gt;  &lt;p&gt;In the web server context (equally applicable to other application servers), you'd usually need to look at MaxUserPort when:&lt;/p&gt;  &lt;p&gt; - your &lt;strong&gt;server process&lt;/strong&gt; is &lt;strong&gt;communicating with some type of other system&lt;/strong&gt; (like a back-end database, or any TCP-based application server - quite often http web servers)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;And:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; - you are &lt;strong&gt;not using socket pooling&lt;/strong&gt;, and/or&lt;/p&gt;  &lt;p&gt; - your &lt;strong&gt;request model&lt;/strong&gt; is something like &lt;strong&gt;one request = one outbound TCP connection&lt;/strong&gt; (or more!)&lt;/p&gt;  &lt;p&gt;In this type of scenario, you can run out of ephemeral ports (between 1024 and MaxUserPort) very quickly, and the &lt;strong&gt;problem will scale with the load applied to the system&lt;/strong&gt;, particularly if a socket is acquired and abandoned with every request. &lt;/p&gt;  &lt;p&gt;When a socket is abandoned, it'll take two minutes to fall back into the pool.&lt;/p&gt;  &lt;p&gt;Discussions about how the design could scale better if it reused sockets rather than pooling tend to be unwelcome when the users are screaming that the app is slow, or hung, or whatever, so at this point, you'd have established that new request threads are hung waiting on an available socket, and just turn up MaxUserPort to 65534.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;What Next? TcpTimedWaitDelay, natch&lt;/h3&gt;  &lt;p&gt;Once &lt;strong&gt;MaxUserPort&lt;/strong&gt; is at 65534, it's still possible for the &lt;strong&gt;rate of port use&lt;/strong&gt; to &lt;strong&gt;exceed&lt;/strong&gt; the rate at which they're being returned to the pool! You've bought yourself some headroom, though.&lt;/p&gt;  &lt;p&gt;So &lt;strong&gt;how do you return connections to the pool faster&lt;/strong&gt;?&lt;/p&gt;  &lt;p&gt;Glad you asked: you start tweaking &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/730fb465-d402-4853-bacc-16ba78e9fcc01033.mspx?mfr=true"&gt;TcpTimedWaitDelay&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;By default, a connection can't be reused for 2 times the Maximum Segment Lifetime (MSL), which works out to 4 minutes, or &lt;em&gt;so the docs claim&lt;/em&gt;, but according to The Lore O' The Group here, we reckon it's actually &lt;strong&gt;just the TcpTimedWaitDelay&lt;/strong&gt; value, no doubling of anything.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;TcpTimedWaitDelay&lt;/strong&gt; lets you set a value for the Time_Wait timeout manually.&lt;/p&gt;  &lt;p&gt;As a quick aside: the value you specify has to take retransmissions into account - a client could still be transferring data from a server when a &lt;strong&gt;FIN&lt;/strong&gt; is sent by the server, and the client then gets &lt;strong&gt;TcpTimedWaitDelay&lt;/strong&gt; seconds to get all the bits it wants. This could be sucky in, for example, a flaky dial-up networking scenario, or, say, New Zealand, if the client needs to retransmit a whole lot... and it's sloooow. (and this is a global option, as far as I remember).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;30 seconds&lt;/strong&gt; is a nice, round number that either quarters or eighths (depending on who you ask -&lt;em&gt; we&lt;/em&gt; say quarter for now) the time before a socket is reusable (without the programmer doing anything special (say, SO_REUSEADDR)).&lt;/p&gt;  &lt;p&gt;If you've had to do this, at this point, you should be &lt;a href="http://www.codinghorror.com/blog/archives/000966.html"&gt;thinking seriously about the architecture&lt;/a&gt; - &lt;strong&gt;will this scale to whatever load requirements you have&lt;/strong&gt;?&lt;/p&gt;  &lt;p&gt;The maths is straightforward: &lt;/p&gt;  &lt;p&gt;If each &lt;strong&gt;connection&lt;/strong&gt; is &lt;strong&gt;reusable&lt;/strong&gt; after a &lt;strong&gt;minimum of N&lt;/strong&gt; (TcpTimedWaitDelay) seconds     &lt;br /&gt;and you are &lt;strong&gt;creating more than X&lt;/strong&gt; (MaxUserPort) connections &lt;strong&gt;in an N second period...&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Your app is going to spend time &amp;quot;waiting&amp;quot; on socket availability...&lt;/p&gt;  &lt;p&gt;Which is what techy types call &amp;quot;blocking&amp;quot; or &amp;quot;hanging&amp;quot;. Nice*!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Fun* KB Articles:     &lt;br /&gt;&lt;/strong&gt;&lt;a title="http://support.microsoft.com/kb/319502/" href="http://support.microsoft.com/kb/319502/"&gt;http://support.microsoft.com/kb/319502/&lt;/a&gt;    &lt;br /&gt;&lt;a title="http://support.microsoft.com/kb/328476" href="http://support.microsoft.com/kb/328476"&gt;http://support.microsoft.com/kb/328476&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2986729" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/ISA+Server/default.aspx">ISA Server</category><category domain="http://blogs.technet.com/tristank/archive/tags/Networking/default.aspx">Networking</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item><item><title>What's in IIS 7.0 for me?</title><link>http://blogs.technet.com/tristank/archive/2008/02/29/what-s-in-iis-7-0-for-me.aspx</link><pubDate>Fri, 29 Feb 2008 06:16:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2941833</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/2941833.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=2941833</wfw:commentRss><description>&lt;p&gt;While having a seemingly-innocuous chat with a colleague, I was asked to &amp;quot;throw together a few points&amp;quot; on what IIS 7.0 would do for a web application I've worked with in the past. Serves me right for &lt;em&gt;talking to people&lt;/em&gt;, really.&lt;/p&gt;  &lt;p&gt;In this application's case, authoring, publishing and content creation weren't as important as eventual scale-out and actual application performance (otherwise the just-released &lt;a href="http://blogs.iis.net/robert_mcmurray/archive/2008/02/27/ftp7-for-windows-server-2008-rtm-is-released.aspx"&gt;FTP7&lt;/a&gt; would have been top of the list).&lt;/p&gt;  &lt;p&gt;Here's what I came up with, off the cuff:    &lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://learn.iis.net/page.aspx/108/core-web-server-overview/"&gt;Reduced attack surface&lt;/a&gt;/patching requirements: IIS7 is now modular, and only the parts of the server actually needed by the application are required to be installed. This can also enable performance increases due to reduced memory footprint.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Vastly (imho) improved &lt;a href="http://learn.iis.net/page.aspx/206/dynamic-compression/"&gt;compression capabilities&lt;/a&gt; and compression performance (with automatic compression back-off when CPU use is high! How cool is that!?)       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Simplified &lt;a href="http://learn.iis.net/page.aspx/211/shared-configuration/"&gt;web farm management&lt;/a&gt; - if the application is able to work reliably in a web farm scenario, the IIS configuration store can be centralized and shared across all machines in the farm. (also see MSDeploy)       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://learn.iis.net/page.aspx/127/deep-dive-into-iis-7-configuration/"&gt;XCOPYable configuration&lt;/a&gt; - easily ensure settings are consistent between dev, qa and prod environments.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis7/"&gt;Failed Request Tracing&lt;/a&gt; (aka FREB) - if failures occur, request traces can be captured that include detailed diagnostic information.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fb8b981f-227c-4af6-a44b-b115696a80ac&amp;amp;DisplayLang=en"&gt;Windows Server 2008 security&lt;/a&gt;, performance and scalability improvements - the most secure Windows yet (I expect); support for the latest hardware and 64-bit computing; and optimized TCP/IP performance.       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://learn.iis.net/page.aspx/144/how-to-setup-ssl-on-iis-7/"&gt;SSL&lt;/a&gt; performance greatly increased - &lt;a href="http://msdn2.microsoft.com/en-us/library/aa364671.aspx"&gt;Kernel-mode SSL&lt;/a&gt; (not the best link for admin types) reduces context switching and ring transitions, and improves performance       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/07/03/IIS7/#S3"&gt;Better UI!&lt;/a&gt; After a short time working out how the new model worked, I'm sold. &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2941833" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>SetSPN improvements in Windows Server 2008! W00t!</title><link>http://blogs.technet.com/tristank/archive/2007/12/21/kerberos-and-setspn-improvements-in-iis-7-0-under-windows-server-2008.aspx</link><pubDate>Fri, 21 Dec 2007 10:21:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2659321</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/2659321.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=2659321</wfw:commentRss><description>&lt;p&gt;All this stuff is based on a prerelease (RC1) version of Windows Server 2008 and may change before final release. Cheques may not be honoured.&lt;/p&gt;  &lt;p&gt;I had a &lt;em&gt;happy moment&lt;/em&gt; one night in India when the trainer for our IIS 7.0 TTT course discussed some of the Kerberos-related improvements in IIS7. &lt;/p&gt;  &lt;p&gt;... SetSPN got revamped.&lt;/p&gt;  &lt;p&gt;We all know (or knew, before my wiki collapsed) that &lt;a href="http://blogs.technet.com/tristank/archive/2006/05/08/spns-r-fn.aspx" mce_href="http://blogs.technet.com/tristank/archive/2006/05/08/spns-r-fn.aspx"&gt;duplicate Kerberos SPNs are bad&lt;/a&gt;. (The Wiki is still down, by the way, sorry).&lt;/p&gt;  &lt;p&gt;We know that it's been a little bit iffy configuring said SPNs and that the chance of getting it wrong was quite high - there was no control that prevented the registration of the same SPN twice, against different accounts.&lt;/p&gt;  &lt;p&gt;Worse: SetSPN was focused on the account (security principal) only - if you thought you had a duplicate, you needed to use a customized LDIFDE command to track it down based on the SPN, as SetSPN wouldn't search by SPN, only by account.&lt;/p&gt;  &lt;p&gt;Buuut: Some &lt;em&gt;wonderful&lt;/em&gt; SDE that should really be on my Christmas card list decided that SetSPN could become an all-singing all-dancing SPN troubleshooting tool!&lt;/p&gt;  &lt;p&gt;Yes folks, SetSPN now has SANITY CHECK (-S) switches and FIND THE PROBLEM (-X) switches! HOW COOL IS THAT!?&lt;/p&gt;  &lt;p&gt;In order to not break backwards compatibility (I infer; I didn't actually participate in the conversation or decision making process), these are implemented as new switches, not old ones: Existing scripts that rely on creating duplicates (and then presumably resolving that situation shortly afterwards) won't (er, shouldn't) suddenly break.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;C:\Users\Administrator&amp;gt;setspn     &lt;br /&gt;Usage: setspn [modifiers switches data] computername      &lt;br /&gt;Where 'computername' can be the name or domain\name &lt;/p&gt;    &lt;p&gt;Modifiers:     &lt;br /&gt;&lt;strong&gt;-F = perform the duplicate checking on forestwide level&lt;/strong&gt;      &lt;br /&gt;-P = do not show progress (useful for redirecting output to file) &lt;/p&gt;    &lt;p&gt;Switches:     &lt;br /&gt;-R = reset HOST ServicePrincipalName      &lt;br /&gt;Usage:&amp;#160;&amp;#160; setspn -R computername      &lt;br /&gt;-A = add arbitrary SPN      &lt;br /&gt;Usage:&amp;#160;&amp;#160; setspn -A SPN computername      &lt;br /&gt;&lt;strong&gt;-S = add arbitrary SPN &lt;font color="#ff0000"&gt;after verifying no duplicates exist&lt;/font&gt;&lt;/strong&gt;      &lt;br /&gt;Usage:&amp;#160;&amp;#160; setspn -S SPN computername      &lt;br /&gt;-D = delete arbitrary SPN      &lt;br /&gt;Usage:&amp;#160;&amp;#160; setspn -D SPN computername      &lt;br /&gt;-L = list registered SPNs      &lt;br /&gt;Usage:&amp;#160;&amp;#160; setspn [-L] computername      &lt;br /&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;-Q = query for existence of SPN&lt;/font&gt;&lt;/strong&gt;      &lt;br /&gt;Usage:&amp;#160;&amp;#160; setspn -Q SPN      &lt;br /&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;-X = search for duplicate SPNs&lt;/strong&gt;        &lt;br /&gt;&lt;/font&gt;Usage:&amp;#160;&amp;#160; setspn -X &lt;/p&gt;    &lt;p&gt;Examples:     &lt;br /&gt;setspn -R daserver1      &lt;br /&gt;It will register SPN 'HOST/daserver1' and 'HOST/{DNS of daserver1}'      &lt;br /&gt;setspn -A http/daserver daserver1      &lt;br /&gt;It will register SPN 'http/daserver' for computer 'daserver1'      &lt;br /&gt;setspn -D http/daserver daserver1      &lt;br /&gt;It will delete SPN 'http/daserver' for computer 'daserver1'      &lt;br /&gt;&lt;strong&gt;setspn -F -S http/daserver daserver1       &lt;br /&gt;It will register SPN 'http/daserver' for computer 'daserver1' if no such SPN exists in the forest &lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So, any instructions out there that currently use the positively archaic SETSPN -A can now be updated to use the shiny new SETSPN -S.&lt;/p&gt;  &lt;p&gt;Again, I ask you: How cool is that!?&lt;/p&gt;  &lt;p&gt;I should add that I haven't actually tried this yet, just gurgled at the wonderful new options and imagined their effect. If it throws a &amp;quot;NotYetImplementedException&amp;quot;, please forgive my enthusiasm :)&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2659321" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/ISA+Server/default.aspx">ISA Server</category><category domain="http://blogs.technet.com/tristank/archive/tags/Networking/default.aspx">Networking</category><category domain="http://blogs.technet.com/tristank/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>401.3, you say? Not 403?</title><link>http://blogs.technet.com/tristank/archive/2007/10/22/401-3-you-say-not-403.aspx</link><pubDate>Mon, 22 Oct 2007 12:35:12 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2227198</guid><dc:creator>tristank</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/tristank/comments/2227198.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=2227198</wfw:commentRss><description>&lt;p&gt;You're running an IIS 6.0 website, and you have a virtual directory configured for anonymous authentication only (that is, you've &lt;strong&gt;un&lt;/strong&gt;ticked Integrated Windows Authentication).&lt;/p&gt; &lt;p&gt;Using a web browser, you try to access a file in that virtual directory. &lt;a href="http://example.com/vdir/something.txt"&gt;http://example.com/vdir/something.txt&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;What's a web browser?&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Know what&amp;nbsp;IE is, Leon?&lt;/p&gt; &lt;p&gt;&lt;em&gt;Yeah.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Same thing.&lt;/p&gt; &lt;p&gt;&lt;em&gt;I've never seen an IE. But I know what you mean.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Anyway, the something.txt file is ACLd such that the anonymous user account (IUSR_MACHINENAME)&amp;nbsp;doesn't have any NTFS permissions to it. IIS impersonates the anonymous user for any anonymous request, and if it's knocked back, it 401s the client with a WWW-Authenticate header describing the types of authentication supported.&lt;/p&gt; &lt;p&gt;Now IIS needs to ask for &lt;strong&gt;some kind of credential&lt;/strong&gt;, but the only authentication method ticked is &lt;strong&gt;Anonymous&lt;/strong&gt;. So IIS &lt;strong&gt;can't ask for credentials&lt;/strong&gt;. It &lt;strong&gt;can't 401 with a WWW-Authenticate header&lt;/strong&gt; because it's got &lt;strong&gt;nothing to put in it&lt;/strong&gt;.&amp;nbsp;It won't send a &lt;strong&gt;403&lt;/strong&gt; because it hasn't yet made a good-faith attempt to impersonate a user other than Anonymous. &lt;/p&gt; &lt;p&gt;But you haven't configured it to ask for credentials. You could tick Integrated Windows and make the pain go away. Or you could allow the Internet Guest Account (at least) Read access to the file.&amp;nbsp;But you're not doing that, Leon.&lt;/p&gt; &lt;p&gt;Why is that, Leon?&lt;/p&gt; &lt;p&gt;&lt;em&gt;Do you make these questions up yourself, or do you have them written down for you?&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Actually, people come to me with questions all the time, and I sometimes write them down.&amp;nbsp;&lt;/p&gt; &lt;p&gt;Like this one: tell me only the good things that come to your&amp;nbsp;mind, about... Personal Web Server&amp;nbsp;on Windows 95.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Personal Web Server? Let me tell you about Personal Web Server...&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2227198" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/Networking/default.aspx">Networking</category><category domain="http://blogs.technet.com/tristank/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Tip o' the Week: WEVTUTIL for EVTX/EVT file conversion</title><link>http://blogs.technet.com/tristank/archive/2007/10/05/tip-o-the-week-wevtutil-for-evtx-evt-file-conversion.aspx</link><pubDate>Fri, 05 Oct 2007 09:19:19 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2111502</guid><dc:creator>tristank</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/tristank/comments/2111502.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=2111502</wfw:commentRss><description>&lt;p&gt;This week, a pointer to a solution to a problem I occasionally hit.&lt;/p&gt; &lt;p&gt;Windows Vista (and by extension Windows Server 2008, I assume) utilizes a new EVTX log format for event log exports. It's XML-based, natch.&lt;/p&gt; &lt;p&gt;Problem:&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07&amp;amp;displaylang=en"&gt;Everyone's Favourite Log Digestion Tool&amp;nbsp;Log Parser&lt;/a&gt; uses system APIs to read event log exports, and the old .EVT event log format isn't "native" any more. Long story short, it chokes on them.&lt;/p&gt; &lt;p&gt;This, to put it mildly, was annoying, as most customers haven't moved to Windows Server 2008 yet (I mean, it's only five months from release - is there ever a better time?) and so supply event logs in the old format when asked.&lt;/p&gt; &lt;p&gt;Anyway - you can convert the old-school event logs into shiny new event logs&amp;nbsp;through the user interface (just double-click the EVT, wait for it&amp;nbsp;to open and display&amp;nbsp;in chronological order;&amp;nbsp;then do a Save As, pick a location and filename and answer an obscure question about language formatting; then find and open the newly-resaved log file),&amp;nbsp;but bluntly, the GUI process leaves a bit to be desired if you have the slightest inkling towards type-A behaviour, and all I really want is something that'll work in Log Parser, really.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/neilcar/archive/2007/08/15/plogparser-event-logs-and-vista.aspx"&gt;WEVTUTIL (and NeilCar)&lt;/a&gt; to the rescue. It's included out of the box, and&amp;nbsp;it'll convert those&amp;nbsp;dusty&amp;nbsp;old&amp;nbsp;event logs from the command line, with nary a GUI&amp;nbsp;or common dialog in sight, ready for consumption by Logparser, or any other EVTX-friendly file muncher.&lt;/p&gt; &lt;p&gt;Neil's example (for the click-inhibited): &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Consolas"&gt;wevtutil epl application.evt application.evtx /lf:true&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Bewdiful.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2111502" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/ISA+Server/default.aspx">ISA Server</category><category domain="http://blogs.technet.com/tristank/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.technet.com/tristank/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Jason Brown's new blog</title><link>http://blogs.technet.com/tristank/archive/2007/08/03/jason-brown-s-new-blog.aspx</link><pubDate>Thu, 02 Aug 2007 17:03:02 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:1682192</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/1682192.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=1682192</wfw:commentRss><description>&lt;p&gt;The traitorous malcontent (and former MVP) that left my cubicle for greener pastures&amp;nbsp;has set up his own&amp;nbsp;(shiny! new!)&amp;nbsp;little shack on the intarwebs, discussing &lt;em&gt;Sharepoint&lt;/em&gt; of all things.&lt;/p&gt; &lt;p&gt;I mean, I know he's in the Sharepoint support team now, but honestly - what can &lt;em&gt;Sharepoint&lt;/em&gt; do that a stonking great database-driven ASPX site with hundreds of man-years of development&amp;nbsp;ploughed into it can't?&lt;/p&gt; &lt;p&gt;I guess you can find out, &lt;a href="http://blogs.technet.com/jasbro"&gt;over there&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=1682192" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/Extra+Bits+Of+A+Personal+Nature/default.aspx">Extra Bits Of A Personal Nature</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Generating a memory dump when a particular event log occurs</title><link>http://blogs.technet.com/tristank/archive/2007/07/18/generating-a-memory-dump-when-a-particular-event-log-message.aspx</link><pubDate>Wed, 18 Jul 2007 08:18:12 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:1547471</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/1547471.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=1547471</wfw:commentRss><description>&lt;p&gt;Building from &lt;a href="http://blogs.technet.com/netmon/archive/2007/02/22/eventmon-stopping-a-capture-based-on-an-eventlog-event.aspx"&gt;Paul Long's post on stopping a Netmon3 capture on a particular event&lt;/a&gt;, we're going to re-jig it so that we can run &lt;a href="http://support.microsoft.com/kb/286350/"&gt;ADPLUS&lt;/a&gt;&amp;nbsp;soon after&amp;nbsp;a particular event is logged.&lt;/p&gt; &lt;p&gt;This won't produce a dump at the &lt;em&gt;exact&lt;/em&gt; moment of the event log (which more often is what would be most useful for debugging purposes), but for the case I'm working on, I'm mainly interested in the state of the process at around or after that time; it's an intermittent problem that we're not confident we can catch&amp;nbsp;quickly enough manually.&lt;/p&gt; &lt;p&gt;An alternative approach would be to attach, set a break on the Windows event logging function and evaluate the arguments passed to it; that's not what I'm doing here, and this has the advantage of being able to survive process recycling without special care.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;EvtMon.vbs:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;' evtmon.vbs&lt;br&gt;' &lt;/font&gt;&lt;a href="http://blogs.technet.com/netmon/archive/2007/02/22/eventmon-stopping-a-capture-based-on-an-eventlog-event.aspx"&gt;&lt;font face="Courier New" size="1"&gt;http://blogs.technet.com/netmon/archive/2007/02/22/eventmon-stopping-a-capture-based-on-an-eventlog-event.aspx&lt;/font&gt;&lt;/a&gt;&lt;br&gt;&lt;font face="Courier New" size="1"&gt;'======================================================================&lt;br&gt;' Print out the help when something is not typed in correctly or when &lt;br&gt;' nothing at all is typed in. &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;Public Sub PrintHelp&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo "Usage:"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo "&amp;nbsp; EvtMon EventNumber [LogFile]"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo "&amp;nbsp;&amp;nbsp;&amp;nbsp; LogFile is optional.&amp;nbsp; If used, the eventlog name"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo "&amp;nbsp;&amp;nbsp;&amp;nbsp; file ie, application, system, security, etc..."&lt;br&gt;End Sub &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;' Get the arguments.&amp;nbsp; Check for event nubmer and log file as arugments&lt;br&gt;Set objArgs = WScript.Arguments &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;' See how many arguments we have and colect them.&lt;br&gt;if objArgs.Count &amp;lt; 1 OR objArgs.Count &amp;gt; 2 Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintHelp&lt;br&gt;ElseIf objArgs.Count &amp;gt; 1 Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventNumber = objArgs(0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogFile = objArgs(1)&lt;br&gt;Else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EventNumber = objArgs(0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogFile = ""&lt;br&gt;End If &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;If EventNumber &amp;lt;&amp;gt; "" Then &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strComputer = "." &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Attatch to the WMI Service&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objWMIService = GetObject("winmgmts:{(Security)}\\" &amp;amp; _&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; strComputer &amp;amp; "\root\cimv2") &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' if the LogFile is populated add this to our query.&amp;nbsp; Create a&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Event Log monitoring object and send it a query.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If LogFile = "" Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set colMonitoredEvents = objWMIService.ExecNotificationQuery _&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; ("Select * from __InstanceCreationEvent Where " _&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;amp; "TargetInstance ISA 'Win32_NTLogEvent' " _&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;amp; "and TargetInstance.EventCode = '" _&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;amp; EventNumber &amp;amp; "'")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set colMonitoredEvents = objWMIService.ExecNotificationQuery _&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; ("Select * from __InstanceCreationEvent Where " _&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;amp; "TargetInstance ISA 'Win32_NTLogEvent' " _&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;amp; "and TargetInstance.EventCode = '" _&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;amp; EventNumber _&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;amp; "' and TargetInstance.LogFile = '" _&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;amp; LogFile &amp;amp; "'")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Create an object which returns when the next event occurs.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objLatestEvent = colMonitoredEvents.NextEvent&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ' Print some info based on the event log we encountered.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo objLatestEvent.TargetInstance.User&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo objLatestEvent.TargetInstance.TimeWritten&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo objLatestEvent.TargetInstance.Message&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Echo objLatestEvent.TargetInstance.Logfile&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.Echo&lt;br&gt;End If &lt;/font&gt; &lt;p&gt;And the control batch file DUMPONEL.CMD, that does the rest of the work, also cannibalized from Paul's post!&lt;/p&gt; &lt;p&gt;&lt;strong&gt;DUMPONEL.CMD:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;@echo off&lt;br&gt;if "%1"=="" goto Usage&lt;br&gt;if "%2"=="" goto Usage &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;cscript //NoLogo EvtMon.vbs %2 %3&lt;br&gt;cscript adplus.vbs -hang -pn %1 -quiet &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;goto :EOF &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;:Usage&lt;br&gt;echo Usage:&lt;br&gt;echo&amp;nbsp;&amp;nbsp; %0 ProcessName EventNumber Logfile&lt;br&gt;echo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Logfile is optional.&amp;nbsp; If used, the eventlog name&lt;br&gt;echo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file ie, applicaiton, system, security, etc...&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New" size="1"&gt;So, for example:&lt;/font&gt;&lt;/p&gt; &lt;p&gt;I've put the two files in my &lt;strong&gt;Debugging Tools for Windows&lt;/strong&gt; installation directory, and can use them with:&lt;/p&gt; &lt;p&gt;DUMPONEL w3wp.exe 2023&lt;/p&gt; &lt;p&gt;DumpOnEL runs EvtMon with the second and third arguments. When Evtmon returns (Evtmon just waits for the event it's looking for, a bit like a conditional&amp;nbsp;"pause" command), ADPlus runs and hang&amp;nbsp;dumps everything with the first argument (process name) specified. &lt;/p&gt; &lt;p&gt;The process then continues running happily* after it's finished being dumped, and the file ends up in&amp;nbsp;a Hang_Mode_xxxxx folder under the current directory.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=1547471" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item><item><title>KDC_ERR_BADOPTION when attempting constrained delegation</title><link>http://blogs.technet.com/tristank/archive/2007/06/18/kdc-err-badoption-when-attempting-constrained-delegation.aspx</link><pubDate>Mon, 18 Jun 2007 10:50:54 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:1278995</guid><dc:creator>tristank</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/tristank/comments/1278995.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=1278995</wfw:commentRss><description>&lt;p&gt;Hit this earlier while working with someone else on a Kerberos delegation problem.&lt;/p&gt; &lt;p&gt;All the &lt;a href="http://sharepoint.tristank.com/Pub/Wiki%20Pages/SPN%20Registration.aspx"&gt;SPNs looked right&lt;/a&gt; and&amp;nbsp;were registered against the right accounts;&amp;nbsp;all the App Pools were Network Service; from what I'd been told,&amp;nbsp;everything should have been working... but wasn't. More troublingly, it had been working at one point. But why!?&lt;/p&gt; &lt;p&gt;We checked that Kerb was working from the client to the first tier, then grabbed a network capture from the web server while trying to reproduce the problem.&lt;/p&gt; &lt;p&gt;The trace showed us a KDC_ERR_BADOPTION in response to a TGS request for http/targetserver.example.com , but looking it up didn't yield any likely results (until after we knew where to look).&lt;/p&gt; &lt;p&gt;In short - if everything else is right, chances are this error means that the middle tier (or however far you've got - whatever machine is acting as the KDC client at this point) isn't able to delegate.&lt;/p&gt; &lt;p&gt;We checked delegation options for the middle tier account, quickly popped them into "Trusted for delegation", and whop, it was working. Now we have a working baseline, confidence is restored, and they're going to implement constrained delegation later. The reason it worked once before: ticking "trusted for delegation" was one of a batch of changes implemented and rolled back during troubleshooting.&lt;/p&gt; &lt;p&gt;I updated&amp;nbsp;my&amp;nbsp;wiki with a useful* batch file that &lt;a href="http://sharepoint.tristank.com/Pub/Wiki%20Pages/Troubleshooting%20Constrained%20Delegation.aspx"&gt;searches msds-allowedtodelegateto attributes as well as serviceprincipalname attributes&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;It's documented in Technet already, but the search excerpt I got put me off initially:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerberr.mspx" href="http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerberr.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/tkerberr.mspx&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;The SPN to which the client is attempting to delegate credentials is not in its &lt;b&gt;Allowed-to-delegate-to &lt;/b&gt;list.&lt;/em&gt; &lt;p&gt;&lt;b&gt;&lt;em&gt;Resolution&lt;/em&gt;&lt;/b&gt; &lt;p&gt;&lt;em&gt;1.Use Network Monitor to determine the SPN to which the client is attempting to delegate credentials. You will need this information in a later step.&lt;/em&gt; &lt;p&gt;&lt;em&gt;2.Click &lt;b&gt;Start&lt;/b&gt;, click &lt;b&gt;Run&lt;/b&gt;, and then open Active Directory Users and Computers by typing the following:&lt;/em&gt; &lt;p&gt;&lt;b&gt;&lt;em&gt;dsa.msc&lt;/em&gt;&lt;/b&gt; &lt;p&gt;&lt;em&gt;3.Right-click the user or service account that has problems authenticating, and then click &lt;b&gt;Properties&lt;/b&gt;.&lt;/em&gt; &lt;p&gt;&lt;em&gt;4.Click the &lt;b&gt;Delegation &lt;/b&gt;tab.&lt;/em&gt; &lt;p&gt;&lt;em&gt;5.The &lt;b&gt;Allowed-to-delegate-to&lt;/b&gt; list is the list of servers shown under the heading, &lt;b&gt;Services to which this account can present delegated credentials&lt;/b&gt;.&lt;/em&gt; &lt;p&gt;&lt;em&gt;6.Add the SPN the client is attempting to delegate to (information from the captured data you obtained in Step 1) to the &lt;b&gt;Allowed-to-delegate-to&lt;/b&gt; list for that client. This will tell the KDC that this client is indeed allowed to authenticate to this service. The KDC will then grant the client the appropriate ticket.&lt;/em&gt; &lt;p&gt;&lt;em&gt;For information about setting up service accounts for delegation, see “HOW TO: Configure Computer Accounts and User Accounts So That They Are Trusted for Delegation in Windows Server 2003 Enterprise Edition” in the Microsoft Knowledge Base at &lt;/em&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkId=23067"&gt;&lt;em&gt;http://go.microsoft.com/fwlink/?LinkId=23067&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt; &lt;p&gt;&lt;em&gt;(or)&lt;/em&gt; &lt;p&gt;&lt;em&gt;• The server does not support constrained delegation or protocol transition. (Windows 2000 does not support constrained delegation or protocol transition.)&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=1278995" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/Networking/default.aspx">Networking</category><category domain="http://blogs.technet.com/tristank/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item><item><title>Can I use SQL Server 2005 as the Biztalk Server 2004 database?</title><link>http://blogs.technet.com/tristank/archive/2007/06/13/can-i-use-sql-server-2005-as-the-biztalk-server-2004-database.aspx</link><pubDate>Wed, 13 Jun 2007 03:17:48 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:1229870</guid><dc:creator>tristank</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/tristank/comments/1229870.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=1229870</wfw:commentRss><description>&lt;p&gt;No - SQL 2005 and Biztalk 2004 aren't currently supported together, except&amp;nbsp;with&amp;nbsp;an "arm's length" SQL data adapter.&lt;/p&gt; &lt;p&gt;The primary BTS2004 database still has to be SQL 2000.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;915919&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft SQL Server 2005 is not currently supported for Microsoft BizTalk Server 2004 databases&lt;br&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;915919"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;915919&lt;/a&gt; &lt;p&gt;926628&amp;nbsp;&amp;nbsp;&amp;nbsp; Summary of operating systems and SQL Server versions supported by different versions of BizTalk Server&lt;br&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;926628"&gt;http://support.microsoft.com/default.aspx?scid=kb;EN-US;926628&lt;/a&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=1229870" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category></item><item><title>FAQ: How can I bundle IIS 6.0 (or IIS 7.0) with my application on an older OS?</title><link>http://blogs.technet.com/tristank/archive/2007/04/23/faq-how-can-i-bundle-iis-6-0-or-iis-7-0-with-my-application-on-an-older-os.aspx</link><pubDate>Mon, 23 Apr 2007 04:24:56 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:806653</guid><dc:creator>tristank</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/tristank/comments/806653.aspx</comments><wfw:commentRss>http://blogs.technet.com/tristank/commentrss.aspx?PostID=806653</wfw:commentRss><description>&lt;p&gt;I've seen&amp;nbsp;a few&amp;nbsp;variations on this question come up recently, generally of the form:&lt;/p&gt; &lt;p&gt;"We have &lt;strong&gt;Windows XP&lt;/strong&gt; clients and require &lt;strong&gt;IIS 7.0&lt;/strong&gt; to be installed on them when our application is installed on them. Is there a redist?"&lt;/p&gt; &lt;p&gt;In short, no.&lt;/p&gt; &lt;p&gt;&lt;em&gt;(Note that this question is distinct from "how can I install and configure the OS version of&amp;nbsp;IIS when I install my application", which is not covered here)&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Since Windows 2000 and IIS 5.0, the only releases of IIS we've made have been a &lt;strong&gt;part of the operating system they're installed with&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;The table of available versions looks something like this:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;IIS 4.0 - NT 4.0 Option Pack&lt;/p&gt; &lt;p&gt;IIS 5.0 - Windows 2000&lt;/p&gt; &lt;p&gt;IIS 5.1 - Windows XP 32-bit, (?and Itanium, from memory?)&lt;/p&gt; &lt;p&gt;IIS 6.0 - Windows 2003, Windows XP x64 edition&lt;/p&gt; &lt;p&gt;IIS 7.0 - Windows Vista, Codename "Longhorn" Server&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Since the NT 4.0 Option Pack, there's been no&amp;nbsp;separate&amp;nbsp;release of IIS.&lt;/p&gt; &lt;p&gt;So, if your app requires IIS and is targeting Windows XP clients, you need to target an IIS version as low as 5.1.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=806653" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/tristank/archive/tags/Developery/default.aspx">Developery</category><category domain="http://blogs.technet.com/tristank/archive/tags/IT+Pro+_2F00_+Sysadmin/default.aspx">IT Pro / Sysadmin</category><category domain="http://blogs.technet.com/tristank/archive/tags/IIS/default.aspx">IIS</category></item></channel></rss>