Processes WebDAV request and generates WebDAV response
You must call Run method in each request to your WebDAV server passing your request and response classes derived from Request and IResponse as input parameters.
HttpHandler-based server:
public class MyHttpHandler : IHttpHandler
{
...
public void ProcessRequest(HttpContext context)
{
HttpContext.Current.Response.BufferOutput = false;
MyEngine engine = new MyEngine();
MyRequest request = new MyRequest();
MyResponse response = new MyResponse();
engine.Run(request, response);
}
...
}
HttpListener-based server: static void Main(string[] args)
{
string uriPrefix = ConfigurationManager.AppSettings["ListenerPrefix"];
HttpListener listener = new HttpListener();
listener.Prefixes.Add(uriPrefix);
listener.Start();
while (true)
{
IAsyncResult result = listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
result.AsyncWaitHandle.WaitOne();
}
}
public static void ListenerCallback(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;
WDEngine engine = new WDEngine();
HttpListenerContext context = listener.EndGetContext(result);
WDRequest request = new WDRequest(context.Request, context.User);
WDResponse response = new WDResponse(context.Response);
engine.Run(request, response);
try
{
context.Response.Close();
}
catch
{
// client closed connection before the content was sent
}
}
Engine Class | ITHit.WebDAV.Server Namespace