public void Process() {
// read the request
if (!TryParseRequest()) {
return;
}
// 100 response to POST
if (_verb == "POST" && _contentLength > 0 && _preloadedContentLength < _contentLength) {
_connection.Write100Continue();
}
// special case for client script
if (_isClientScriptPath) {
_connection.WriteEntireResponseFromFile(_host.PhysicalClientScriptPath + _path.Substring(_host.NormalizedClientScriptPath.Length), false);
return;
}
// deny access to code, bin, etc.
if (IsRequestForRestrictedDirectory()) {
_connection.WriteErrorAndClose(403);
return;
}
// special case for a request to a directory (ensure / at the end and process default documents)
if (ProcessDirectoryRequest()) {
return;
}
PrepareResponse();
// Hand the processing over to HttpRuntime
HttpRuntime.ProcessRequest(this);
}