我已将自己的自定义资源拦截器添加到Awesomiums Webcore。我用它来加载本地html文件,操作它然后返回它。
但是这个HTML文件引用了磁盘上的其他文件,我总是得到错误 - 比如
不允许加载本地资源:file:/// C:/ awesomium project / bin / Debug / Resources / Html / css / myCss.css
无论是作为我的ResourceResponse返回文件还是byte [],都会发生这种情况。我将WebPreferences设置如下
return new WebPreferences()
{
UniversalAccessFromFileURL = true,
FileAccessFromFileURL = true,
SmoothScrolling = true,
};
我使用Awesomiums自定义数据源工作,但我需要提供自己的前缀,即我不能使用asset://。我不知道为什么这不能从IResourceInterceptor工作。有什么想法吗?
这是我对资源拦截器的实现
public bool OnFilterNavigation(NavigationRequest request)
{
return false;//not handled
}
public ResourceResponse OnRequest(ResourceRequest request)
{
var path = request.Url.ToString();
ResourceResponse response = null;
if (path.StartsWith(@"myCustomPrefix://"))
{
response = _firstHandler.HandleRequest(path.Replace(@"myCustomPrefix://", string.Empty));
}
return response;
}
编辑:_firstHandler是一个命令模式链。我可能会对请求做很多事情,所以每个人都有一个处理程序。我想说处理程序有效。如果我将它们设置为在磁盘上创建文件,则会创建该文件 - 如果我直接在awesomium浏览器中从磁盘加载html文件,则会正确加载。当我将它作为ResourceResponse(文件路径)或ResourceResponse(byte [],intPtr,mimetype)返回时它只是一个问题,它说它无法加载HTML引用本地的其他文件。