保存地图为PDF或图片时出现错误,应如何解决?
1、 由于 WritableBitmapImage 具备内容保护机制,当尝试通过 WritableBitmap 渲染来自其他应用域的内容时——例如不同应用程序名称、不同端口或不同服务器来源的数据——在访问其像素数组时系统将抛出Pixels are not accessible的异常。这一机制旨在防止跨域资源的非法访问,保障数据安全。在实际开发中,许多场景会涉及此类限制,尤其在使用地图控件时更为常见。例如,当地图控件集成缓存地图服务如 ArcGISTiledMapServiceLayer 时,地图内容通常由远程服务器提供,属于跨域资源。此时若尝试直接读取地图图像的像素信息,便会触发该安全限制,导致操作失败。为避免此类问题,开发者需确保图像资源与当前应用处于同一安全域内,或采用服务器端处理、代理请求等方式绕过跨域限制,从而顺利获取图像数据并完成后续处理任务。
2、 首先创建 arcgiscache 目录的共享文件夹,例如将其共享路径设为指定位置。
3、 本地主机共享缓存,具体中所示。
4、 需配置读写权限,具体设置见下图。
5、 在Silverlight应用程序部署目录中创建一个指向指定位置的虚拟目录。
6、 将共享路径设置一个别名,如 arccache,具体操作见下图所示。
7、 通过ArcCatalog或ArcGIS Manager对ArcGIS Server的服务器属性进行配置,完成相关设置以确保服务正常运行和管理。
8、 添加缓存类型的目录,将物理路径设为之前创建的共享路径,虚拟路径保持对应设置。
9、 为 Silverlight 应用程序中新建的虚拟目录设置对应路径。
10、 访问本地主机上的Silverlight地图应用缓存,路径为http://localhost/SilverlightMapApp/arccache,具体界面参见下图。
11、 调整已发布的缓存地图服务,将其使用的缓存目录更改为我们的指定路径。
12、 共享路径中新增的 cache 目录,具体位置见下图所示。
13、 能。
14、 请勿通过 VisualStudio 内置 Web 服务器的路径访问,因其端口与其他服务器不同。
15、 这意味着无法在 Visual Studio 中直接测试,必须部署到 IIS 网站环境下运行测试,具体操作所示。
16、 运行程序后,将图片或PDF文件保存,效果所示。

