<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Exporting map containing WMS layers from outside domain to PNG image fails in ArcGIS API for Silverlight Questions</title>
    <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/exporting-map-containing-wms-layers-from-outside/m-p/132531#M3291</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;We have built a Silverlight app (2.4 API on IIS7) that is capable of exporting the visible map extent including all map layers and graphiclayers to a PNG image. To do this, we export the Grid the map is in to a WritableBitmap, like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static byte[] GridToByteArray(UIElement grid)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var writeableBitmap = new WriteableBitmap(grid, null);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writeableBitmap.Invalidate();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pngStream = Encode(writeableBitmap);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var printBuffer = new Byte[pngStream.Length];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pngStream.Read(printBuffer, 0, printBuffer.Length);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return printBuffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The Encode() function uses PngEncoder.cs which is applied unmodified from &lt;/SPAN&gt;&lt;A href="http://slextensions.codeplex.com/"&gt;http://slextensions.codeplex.com/&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This works well, provided that all layers from outside the domain go through a Proxy.ashx. If we don't use a Proxy, we get a "WriteableBitmap has protected content. Pixel access is not allowed" error. The proxy.ashx we use is unmodified from &lt;/SPAN&gt;&lt;A href="http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp_start.htm#jshelp/ags_proxy.htm"&gt;http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp_start.htm#jshelp/ags_proxy.htm&lt;/A&gt;&lt;SPAN&gt;. Its Proxy.config file has of course been modified to use the &amp;lt;ServerUrls&amp;gt; we need.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So far this solution works well with ArcGIS Tiled and Dynamic layers from outside of the domain. The trouble is that we want to use WMS layers as well. I can't get this to work with the Proxy. if I add e.g. the serverUrl&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;serverUrl url="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://geoservices.rijkswaterstaat.nl/nwb_wegen" rel="nofollow" target="_blank"&gt;http://geoservices.rijkswaterstaat.nl/nwb_wegen&lt;/A&gt;&lt;SPAN&gt;?" matchAll="true"&amp;gt;&amp;lt;/serverUrl&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The layer displays fine when going through the proxy:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;esri:WmsLayer ID="NWB Wegen" Url="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://geoservices.rijkswaterstaat.nl/nwb_wegen" rel="nofollow" target="_blank"&gt;http://geoservices.rijkswaterstaat.nl/nwb_wegen&lt;/A&gt;&lt;SPAN&gt;?" SkipGetCapabilities="False" Layers="AAA64" Version="1.1.1" ProxyUrl="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://localhost/Proxy/proxy.ashx" rel="nofollow" target="_blank"&gt;http://localhost/Proxy/proxy.ashx&lt;/A&gt;&lt;SPAN&gt;" /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But when exporting, this layer continues to give the "WriteableBitmap has protected content. Pixel access is not allowed" error.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does the Proxy.ashx need to be modified to allow for this? If so, how? Is the Proxy.config OK like this? Is it even possible??&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Eva&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 16 Nov 2012 09:38:22 GMT</pubDate>
    <dc:creator>EvaDienske</dc:creator>
    <dc:date>2012-11-16T09:38:22Z</dc:date>
    <item>
      <title>Exporting map containing WMS layers from outside domain to PNG image fails</title>
      <link>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/exporting-map-containing-wms-layers-from-outside/m-p/132531#M3291</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;We have built a Silverlight app (2.4 API on IIS7) that is capable of exporting the visible map extent including all map layers and graphiclayers to a PNG image. To do this, we export the Grid the map is in to a WritableBitmap, like this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static byte[] GridToByteArray(UIElement grid)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var writeableBitmap = new WriteableBitmap(grid, null);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; writeableBitmap.Invalidate();&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pngStream = Encode(writeableBitmap);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var printBuffer = new Byte[pngStream.Length];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pngStream.Read(printBuffer, 0, printBuffer.Length);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return printBuffer;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The Encode() function uses PngEncoder.cs which is applied unmodified from &lt;/SPAN&gt;&lt;A href="http://slextensions.codeplex.com/"&gt;http://slextensions.codeplex.com/&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This works well, provided that all layers from outside the domain go through a Proxy.ashx. If we don't use a Proxy, we get a "WriteableBitmap has protected content. Pixel access is not allowed" error. The proxy.ashx we use is unmodified from &lt;/SPAN&gt;&lt;A href="http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp_start.htm#jshelp/ags_proxy.htm"&gt;http://resources.esri.com/help/9.3/arcgisserver/apis/javascript/arcgis/help/jshelp_start.htm#jshelp/ags_proxy.htm&lt;/A&gt;&lt;SPAN&gt;. Its Proxy.config file has of course been modified to use the &amp;lt;ServerUrls&amp;gt; we need.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So far this solution works well with ArcGIS Tiled and Dynamic layers from outside of the domain. The trouble is that we want to use WMS layers as well. I can't get this to work with the Proxy. if I add e.g. the serverUrl&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;serverUrl url="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://geoservices.rijkswaterstaat.nl/nwb_wegen" rel="nofollow" target="_blank"&gt;http://geoservices.rijkswaterstaat.nl/nwb_wegen&lt;/A&gt;&lt;SPAN&gt;?" matchAll="true"&amp;gt;&amp;lt;/serverUrl&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The layer displays fine when going through the proxy:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;esri:WmsLayer ID="NWB Wegen" Url="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://geoservices.rijkswaterstaat.nl/nwb_wegen" rel="nofollow" target="_blank"&gt;http://geoservices.rijkswaterstaat.nl/nwb_wegen&lt;/A&gt;&lt;SPAN&gt;?" SkipGetCapabilities="False" Layers="AAA64" Version="1.1.1" ProxyUrl="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://localhost/Proxy/proxy.ashx" rel="nofollow" target="_blank"&gt;http://localhost/Proxy/proxy.ashx&lt;/A&gt;&lt;SPAN&gt;" /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But when exporting, this layer continues to give the "WriteableBitmap has protected content. Pixel access is not allowed" error.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Does the Proxy.ashx need to be modified to allow for this? If so, how? Is the Proxy.config OK like this? Is it even possible??&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks in advance,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Eva&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 16 Nov 2012 09:38:22 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-api-for-silverlight-questions/exporting-map-containing-wms-layers-from-outside/m-p/132531#M3291</guid>
      <dc:creator>EvaDienske</dc:creator>
      <dc:date>2012-11-16T09:38:22Z</dc:date>
    </item>
  </channel>
</rss>

