本文整理汇总了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;
}