Stopping hot-linking with IIS and ASP.NET

Many web sites suffer from others directly linking to their image, video and other content. This practice is called often called leeching, hot-linking, or inline-linking and causes wasted bandwidth and increased server load to the victim web site. Last weekend, I wrote a little ASP.NET module that prevents hot linking. It can be used on … [Read more…]

Try out the IIS FastCGI techical preview

As you know, we released the FastCGI technical preview this week, aimed at providing a fast and stable platform for running FastCGI applications like PHP.  Its been very popular, with more downloads then we have expected for the first week. I wanted to say thank you to everyone trying this out.  By trying it out, … [Read more…]

IIS7 modules vs. IIS6 ISAPI: Memory Management

For post #3 in the IIS7 Modules vs. IIS6 ISAPI series, let’s look at one of the biggest trouble areas that bite ISAPI developers – managing memory. If you develop software that uses Win32 APIs, you should be familiar with the feeling you get when you look at the MSDN documentation of a fairly simple … [Read more…]

Dude, Sweet! New Error Page and FREB XSLs looks

IIS just got a lot cooler (looking): Check out the new styling XSL stylesheet for the FREB xml log files – http://blogs.iis.net/bills/archive/2006/10/19/Making-Failed-Request-Tracing-More-Approachable.aspx. FREB is a new IIS7 diagnostic feature that automatically collects detailed trace events for failed requests, and saves them as XML log files which can be visualized with the provided stylesheet. Just think … [Read more…]

Extending your IIS 7 server with .NET

I feel like I got off on the wrong foot in my blog coverage of IIS extensibility … I started spending a lot of time talking about building IIS7 server modules with the native API, but did not mention anything about the new .NET extensibility. This is strange for two reasons: I spent the majority … [Read more…]

Where did my IIS7 server go? Troubleshooting 503 "service unavailable" errors

In the previous post, I covered the “server not found” error that is a common and frustrating problem that may occur for a number of reasons after a configuration change, or when deploying a new server machine. Another common “what the hell just happened” error is the plain 503 “service available” error that looks like … [Read more…]

Where did my IIS7 server go? Troubleshooting "server not found" errors

Sometimes, after provisioning a new machine, or making some configuration changes, you may find that your IIS server has gone completely missing without so much as leaving you a note.  As you desperately try to bring up your site, your browser connection times out with “server not found” or, slightly better, you get the plain … [Read more…]

IIS7 modules vs. IIS6 ISAPI #9: Intuitive object model

This is the second post in the series on why IIS7 module development beats the pants off the ISAPI development for the previous version of IIS. Last time, we talked about the class-based encapsulation model for building IIS modules, and how it’s based on C++ classes with type-safe methods as opposed to ISAPI’s static C-style … [Read more…]

IIS7 modules vs. IIS6 ISAPI #10: C++ Class-based encapsulation model

For the first post in this series, lets start with the basics. ISAPI Extensions and Filters are implemented as global exported functions within the extension/filter DLL.  For example, an ISAPI Filter will always contain an exported HttpFilterProc function that gets invoked by the server for each request mapped to it:   DWORD WINAPI HttpFilterProc(          PHTTP_FILTER_CONTEXT pfc, … [Read more…]

10 reasons why server development is better with IIS7

**********UPDATE: Here are the currently published entries in this series that highlight the improvements in the new IIS server programming model: Reason #10 – C++ class-based programming model Reason #9  – Intuitive server object modelReason #8  – Improved memory managementReason #7 – Managing request stateReason #6 – Sending http responses (coming up)…********** As you already know (if you … [Read more…]