我正在努力弄清楚如何使用自定义方案处理程序和cefsharp从嵌入式资源加载图像。我目前正在使用它加载html,css和js文件没有问题,但是当试图加载图像时我总是得到破碎的图像指示器。 (开发工具也无法显示响应)我发现cefsharp.example for ResourceHandler的默认示例没有正确处理超过32KB的任何内容,因此我做了一个小的更改,以便它不会剪切超过32KB的文件,但无论如何对于我试图用作嵌入式资源的任何图像,我仍然会看到破碎的图像。
以下是IResourceHandler所需的ProcessRequest方法。
public bool ProcessRequest(IRequest request, ICallback callback)
{
// The 'host' portion is entirely ignored by this scheme handler.
//Replace internal with our assembly namespacing:
var url = request.Url.Replace("internal://", "MyAssembly.Html.").TrimEnd('/');
fileName = url.Replace('/', '.');
byte[] bytes = null;
var assembly = Assembly.GetExecutingAssembly();
using (Stream embeddedFileStream = assembly.GetManifestResourceStream(fileName))
{
if (embeddedFileStream != null)
{
using (StreamReader reader = new StreamReader(embeddedFileStream))
{
bytes = Encoding.UTF8.GetBytes(reader.ReadToEnd());
}
}
}
if (bytes == null)
{
callback.Dispose();
}
else
{
Task.Run(() =>
{
using (callback)
{
stream = new MemoryStream(bytes);
var fileExtension = Path.GetExtension(fileName);
mimeType = ResourceHandler.GetMimeType(fileExtension);
callback.Continue();
}
});
return true;
}
return false;
}
如上所述,这适用于html,js,css文件,但不适用于任何类型的图像。在这一点上,我迷失了什么。任何帮助将不胜感激。