C# 动态PDF和Android默认浏览器

C# 动态PDF和Android默认浏览器,c#,android,C#,Android,我正在致力于向移动设备用户提供按需生成的PDF文件。我正在使用ASP.NET MVC 2,并使用报表查看器本地报表导出为PDF生成PDF 这给了我PDF内容的原始字节[] 然后,我使用以下方法返回它: 返回文件(pdf,mimeType,“FileName.pdf”) 注意,我尝试过使用和不使用“FileName.pdf”默认名称来保存文件 它在桌面浏览器和iphone中非常有效。我已经用wp7模拟器进行了测试,如果它可以读取pdf(它会提示输入正确的文件名来保存它),那么它似乎可以工作 然而,

我正在致力于向移动设备用户提供按需生成的PDF文件。我正在使用ASP.NET MVC 2,并使用报表查看器本地报表导出为PDF生成PDF

这给了我PDF内容的原始字节[]

然后,我使用以下方法返回它:

返回文件(pdf,mimeType,“FileName.pdf”)

注意,我尝试过使用和不使用“FileName.pdf”默认名称来保存文件

它在桌面浏览器和iphone中非常有效。我已经用wp7模拟器进行了测试,如果它可以读取pdf(它会提示输入正确的文件名来保存它),那么它似乎可以工作

然而,安卓似乎在抱怨

我在Droid-X和Droid设备上进行了测试,在浏览器下载结果中总是显示“下载不成功”。在Opera Mini上,它会提示保存文件(使用包含文件名的返回方法时),并且PDF在设备上保存后可以正常打开

我可以返回已经存在于磁盘上的PDF文件,只要使用:File(“~/filename.PDF”,“application/PDF”);因此,这似乎只是动态PDF的一个问题

以前有人处理过这个问题吗

我在Droid-X和Droid设备上进行了测试,在浏览器下载结果中总是显示“下载不成功”

好的,这意味着HTTP请求失败或者MIME类型不是注册了
ACTION\u VIEW
活动的类型。请记住,DROID没有附带PDF查看器,我忘了DROID X是否附带了PDF查看器

我同意Chris的观点,因为感觉问题在于MIME类型无效。考虑使用<代码> Curl < /Cube >或浏览器插件检查您的HTTP响应头,并确认,“代码>应用程序/PDF< /代码>正在作为MIME类型返回。


如果这没有帮助,您可以提供一个URL供我们测试,这也会有帮助。

我看到多年前的这个问题id,但是如果您只想显示pdf,您可以将您的pdf URL嵌入google文档查看器,然后引用该URL,然后它应该在android浏览器上打开


但是,这仅在URL可公开访问的情况下才有效。

您能否验证在动态情况下是否以相同的方式设置mime类型?您是否可以窥探流量或以其他方式转储要比较的标头?mime类型正在设置为application/pdf。我发现似乎正在发生的事情是,在资源的POST发生后,Android设备(甚至在SDK中使用emulator)立即对同一资源执行GET。HTTP POST是成功的,但是GET导致了404(因为我只是在响应POST)。我不知道为什么它要求它两次(每次使用不同的方法)。在我启用HTTP GETs之后,它确实正常工作,并且没有执行两个请求。我还没有弄清楚双重请求,但我确实取得了进展。我有完全相同的问题。Firefox和Opera Mobile可以工作,但本地DroidX浏览器无法工作。顺便说一句,动态jpeg图像工作良好。我正在使用HTTPS,这似乎让事情变得更糟。我已经能够通过HTTP加载静态PDF文件。MIME类型是正确的。从我在Android论坛上看到的情况来看,这似乎是Android用户的一个常见问题。该URL无法从公共互联网访问,但正如我在上面的评论中所提到的,MIME类型是正确的,但它正在执行一个POST,紧接着是GET,并且只显示GET的响应(这是一个404,所以没有内容显示)。