本文整理匯總了C#中MindTouch.Dream.DreamMessage.SetCacheMustRevalidate方法的典型用法代碼示例。如果您正苦於以下問題:C# DreamMessage.SetCacheMustRevalidate方法的具體用法?C# DreamMessage.SetCacheMustRevalidate怎麽用?C# DreamMessage.SetCacheMustRevalidate使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類MindTouch.Dream.DreamMessage
的用法示例。
在下文中一共展示了DreamMessage.SetCacheMustRevalidate方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: Invoke
public Yield Invoke(Plug plug, string verb, XUri uri, DreamMessage request, Result<DreamMessage> response)
{
// we only support GET as verb
DreamMessage reply;
if((verb != Verb.GET) && (verb != Verb.HEAD)) {
reply = new DreamMessage(DreamStatus.MethodNotAllowed, null, null);
reply.Headers.Allow = Verb.GET + "," + Verb.HEAD;
} else {
bool head = (verb == Verb.HEAD);
// try to load the assembly
System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(uri.Host);
Version version = assembly.GetName().Version;
DateTime timestamp = new DateTime(2000, 1, 1).AddDays(version.Build).AddSeconds(version.Revision * 2);
// check if request is just about re-validation
if(!head && request.CheckCacheRevalidation(timestamp)) {
reply = DreamMessage.NotModified();
} else {
try {
System.IO.Stream stream = assembly.GetManifestResourceStream(uri.Path.Substring(1));
if(stream != null) {
MimeType mime = MimeType.New(uri.GetParam(DreamOutParam.TYPE, null)) ?? MimeType.BINARY;
reply = new DreamMessage(DreamStatus.Ok, null, mime, stream.Length, head ? System.IO.Stream.Null : stream);
if(head) {
stream.Close();
} else {
reply.SetCacheMustRevalidate(timestamp);
}
} else {
reply = DreamMessage.NotFound("could not find resource");
}
} catch(System.IO.FileNotFoundException) {
reply = DreamMessage.NotFound("could not find resource");
} catch(Exception e) {
reply = DreamMessage.InternalError(e);
}
}
}
response.Return(reply);
yield break;
}