diff --git a/lib/csharp/Makefile.am b/lib/csharp/Makefile.am
index 8110319..17b8eba 100644
--- a/lib/csharp/Makefile.am
+++ b/lib/csharp/Makefile.am
@@ -18,6 +18,7 @@
 #
 
 THRIFTCODE= \
+            /r:System.Web \
             src/Collections/THashSet.cs \
             src/Protocol/TBase.cs \
             src/Protocol/TBase64Utils.cs \
@@ -49,6 +50,7 @@
             src/Transport/TServerSocket.cs \
             src/Transport/TTransportFactory.cs \
             src/Transport/THttpClient.cs \
+            src/Transport/THttpHandler.cs \
             src/TProcessor.cs \
             src/TApplicationException.cs
 
diff --git a/lib/csharp/src/Thrift.csproj b/lib/csharp/src/Thrift.csproj
index 7eeb6fe..23fe018 100644
--- a/lib/csharp/src/Thrift.csproj
+++ b/lib/csharp/src/Thrift.csproj
@@ -52,6 +52,7 @@
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
+    <Reference Include="System.Web" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Collections\THashSet.cs" />
@@ -81,6 +82,7 @@
     <Compile Include="Transport\TBufferedTransport.cs" />
     <Compile Include="Transport\TFramedTransport.cs" />
     <Compile Include="Transport\THttpClient.cs" />
+    <Compile Include="Transport\THttpHandler.cs" />
     <Compile Include="Transport\TServerSocket.cs" />
     <Compile Include="Transport\TServerTransport.cs" />
     <Compile Include="Transport\TSocket.cs" />
diff --git a/lib/csharp/src/Transport/THttpHandler.cs b/lib/csharp/src/Transport/THttpHandler.cs
new file mode 100644
index 0000000..7fe750d
--- /dev/null
+++ b/lib/csharp/src/Transport/THttpHandler.cs
@@ -0,0 +1,81 @@
+//
+//  THttpHandler.cs
+//
+//  Authors:
+//		Fredrik Hedberg <fhedberg@availo.com>
+//
+//  Distributed under the Apache Public License
+//
+
+using System;
+using System.Web;
+
+using Thrift.Protocol;
+
+namespace Thrift.Transport
+{
+    public class THttpHandler : IHttpHandler
+    {
+        protected TProcessor processor;
+
+        protected TProtocolFactory inputProtocolFactory;
+        protected TProtocolFactory outputProtocolFactory;
+
+        public THttpHandler(TProcessor processor)
+            : this(processor, new TBinaryProtocol.Factory())
+        {
+
+        }
+        
+        public THttpHandler(TProcessor processor, TProtocolFactory protocolFactory)
+            : this(processor, protocolFactory, protocolFactory)
+        {
+
+        }
+
+        public THttpHandler(TProcessor processor, TProtocolFactory inputProtocolFactory, TProtocolFactory outputProtocolFactory)
+        {
+            this.processor = processor;
+            this.inputProtocolFactory = inputProtocolFactory;
+            this.outputProtocolFactory = outputProtocolFactory;
+        }
+
+        public void ProcessRequest(HttpContext context)
+        {
+            context.Response.ContentType = "application/x-thrift";
+            context.Response.ContentEncoding = System.Text.Encoding.UTF8;
+
+            TTransport transport = new TStreamTransport(context.Request.InputStream, context.Response.OutputStream);
+
+            TProtocol inputProtocol = null;
+            TProtocol outputProtocol = null;
+
+            try
+            {
+                inputProtocol = inputProtocolFactory.GetProtocol(transport);
+                outputProtocol = outputProtocolFactory.GetProtocol(transport);
+
+                while (processor.Process(inputProtocol, outputProtocol)) { }
+            }
+            catch (TTransportException)
+            {
+                // Client died, just move on
+            }
+            catch (TApplicationException tx)
+            {
+                Console.Error.Write(tx);
+            }
+            catch (Exception x)
+            {
+                Console.Error.Write(x);
+            }
+
+            transport.Close();
+        }
+
+        public bool IsReusable
+        {
+            get { return true; }
+        }
+    }
+}
