本文整理汇总了C#中IHttpRequest.SetCookies方法的典型用法代码示例。如果您正苦于以下问题:C# IHttpRequest.SetCookies方法的具体用法?C# IHttpRequest.SetCookies怎么用?C# IHttpRequest.SetCookies使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IHttpRequest
的用法示例。
在下文中一共展示了IHttpRequest.SetCookies方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessRequest
private void ProcessRequest(IHttpClientContext context, IHttpRequest request)
{
IHttpResponse response = request.CreateResponse(context);
try
{
foreach (IRule rule in _rules)
{
if (!rule.Process(request, response))
continue;
response.Send();
return;
}
// load cookies if the exist.
RequestCookies cookies = request.Headers["cookie"] != null
? new RequestCookies(request.Headers["cookie"])
: new RequestCookies(string.Empty);
request.SetCookies(cookies);
IHttpSession session;
if (cookies[_sessionCookieName] != null)
{
string sessionCookie = cookies[_sessionCookieName].Value;
// there's a bug somewhere which messes up headers which can render the session cookie useless.
// therefore let's consider the session cookie as not set if that have happened.
if (sessionCookie.Length > 40)
{
_logWriter.Write(this, LogPrio.Error, "Session cookie is invalid: " + sessionCookie);
cookies.Remove(_sessionCookieName);
_sessionStore.Remove(sessionCookie); // free the session cookie (and thus generating a new one).
session = _sessionStore.Create();
}
else
session = _sessionStore.Load(sessionCookie) ??
_sessionStore.Create(sessionCookie);
}
else
session = _sessionStore.Create();
HandleRequest(context, request, response, session);
}
catch (Exception err)
{
if (_exceptionHandler == null)
#if DEBUG
throw;
#else
{
WriteLog(LogPrio.Fatal, err.Message);
return;
}
#endif
_exceptionHandler(this, err);
Exception e = err;
while (e != null)
{
if (e is SocketException)
return;
e = e.InnerException;
}
try
{
#if DEBUG
context.Respond("HTTP/1.0", HttpStatusCode.InternalServerError, "Internal server error", err.ToString(), "text/plain");
#else
context.Respond("HTTP/1.0", HttpStatusCode.InternalServerError, "Internal server error");
#endif
}
catch (Exception err2)
{
LogWriter.Write(this, LogPrio.Fatal, "Failed to respond on message with Internal Server Error: " + err2);
}
}
}
示例2: ProcessRequest
void ProcessRequest(IHttpClientContext context, IHttpRequest request)
{
LogWriter.Write(this, LogPrio.Trace, "Processing request...");
IHttpResponse response = request.CreateResponse(context);
// Load cookies if they exist
RequestCookies cookies = request.Headers["cookie"] != null
? new RequestCookies(request.Headers["cookie"])
: new RequestCookies(String.Empty);
request.SetCookies(cookies);
// Create a request signature
HttpRequestSignature signature = new HttpRequestSignature(request);
// Look for a signature match in our handlers
HttpRequestHandler foundHandler = null;
bool doLock = !rwHandlersLock.IsReadLockHeld;
if (doLock) rwHandlersLock.EnterReadLock();
try
{
for (int i = 0; i < _requestHandlers.Length; i++)
{
HttpRequestHandler handler = _requestHandlers[i];
if (signature == handler.Signature)
{
foundHandler = handler;
break;
}
}
}
finally { if (doLock) rwHandlersLock.ExitReadLock(); }
if (foundHandler != null)
FireRequestCallback(context, request, response, foundHandler);
else
FireRequestCallback(context, request, response, _notFoundHandler);
LogWriter.Write(this, LogPrio.Trace, "...done processing request.");
}