Xamarin 表单:Epubreader:System.AggregateException:'发生了一个或多个错误
Xamarin forms: Epubreader: System.AggregateException: 'One or more errors occurred
我正在使用 epubreader (vers-one) NuGet 包来解析 .epub 文件。
我的代码:
string fileName = "SampleEPUB.epub";
var assembly = typeof(MainPage).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.{fileName}");
EpubBook epubBook = EpubReader.ReadBook(stream);
foreach (EpubNavigationItem chapter in epubBook.Navigation)
{
chapterDetails.Add(new ChapterDetails() { title = chapter.Title, htmlData = chapter.HtmlContentFile?.Content, subChapters = chapter.NestedItems });
}
出于测试目的,我在项目中添加了 epub 文件并像上面那样解析章节。我需要更改此实现。
我能够获取存储在我们数据库中的 epub 文件 link。现在我需要从 link 解析 epub 的章节。但是当我在上面的代码中使用 link 作为 fileName
时,我得到以下异常:
System.AggregateException: 'One or more errors occurred. (Value cannot be null.Parameter name: stream)'
我该如何解决这个问题?一个样本 link 是 here. I have added a sample project here 具有 .epub 文件 links 作为参考(epub 文件 links 在样本中被注释)。
System.AggregateException: 'One or more errors occurred. (Value cannot be null.Parameter name: stream)'
GetManifestResourceStream
方法用于访问嵌入式文件,该文件应该放在Xamarin.Forms项目的共享项目中。该代码不适用于来自数据库的文件。您可以调试以获取该流为空,因为该文件名在项目中不存在。
Stream stream = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.{fileName}");
在您的情况下,它只需要从 url 获取流。尝试使用以下代码获取流。
Stream stream;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)aRequest.GetResponse();
stream = response.GetResponseStream();
我正在使用 epubreader (vers-one) NuGet 包来解析 .epub 文件。
我的代码:
string fileName = "SampleEPUB.epub";
var assembly = typeof(MainPage).GetTypeInfo().Assembly;
Stream stream = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.{fileName}");
EpubBook epubBook = EpubReader.ReadBook(stream);
foreach (EpubNavigationItem chapter in epubBook.Navigation)
{
chapterDetails.Add(new ChapterDetails() { title = chapter.Title, htmlData = chapter.HtmlContentFile?.Content, subChapters = chapter.NestedItems });
}
出于测试目的,我在项目中添加了 epub 文件并像上面那样解析章节。我需要更改此实现。
我能够获取存储在我们数据库中的 epub 文件 link。现在我需要从 link 解析 epub 的章节。但是当我在上面的代码中使用 link 作为 fileName
时,我得到以下异常:
System.AggregateException: 'One or more errors occurred. (Value cannot be null.Parameter name: stream)'
我该如何解决这个问题?一个样本 link 是 here. I have added a sample project here 具有 .epub 文件 links 作为参考(epub 文件 links 在样本中被注释)。
System.AggregateException: 'One or more errors occurred. (Value cannot be null.Parameter name: stream)'
GetManifestResourceStream
方法用于访问嵌入式文件,该文件应该放在Xamarin.Forms项目的共享项目中。该代码不适用于来自数据库的文件。您可以调试以获取该流为空,因为该文件名在项目中不存在。
Stream stream = assembly.GetManifestResourceStream($"{assembly.GetName().Name}.{fileName}");
在您的情况下,它只需要从 url 获取流。尝试使用以下代码获取流。
Stream stream;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)aRequest.GetResponse();
stream = response.GetResponseStream();