我正在尝试使用ArcGIS JavaScript加载ArcGIS FeatureService。由于此功能服务是安全服务,因此我在ArcGIS JavaScript中启用了代理。主要问题是请求与代理一起时服务请求失败。当我在事件查看器中检查时,我看到错误远程主机关闭了连接。错误代码是0x80070057。在中的authproxy.ProcessRequest(HttpContext context)中。有人有这个想法吗?
答案 0 :(得分:1)
好吧,如果您通过跨域请求访问令牌服务,并且浏览器和Web服务器都支持CORS,则ArcGIS API for JavaScript可以通过HTTPS从HTTP页面向令牌服务发出请求。如果CORS支持不可用,您将需要设置和使用代理页面。然后,代理页面将通过HTTPS与令牌服务进行通信。对于Internet Explorer,需要通过HTTPS访问整个应用程序。
使用应用程序配置代理后,请测试应用程序以确保正确处理请求。应用程序应该像在代理实现之前一样运行。如果没有,您可能需要对代理进行故障排除。
以下问题排查提示可帮助您查找并解决问题:
如果您的应用程序环境支持调试模式,您可以在代理中设置断点并检测它是否正常运行。
将ProxyConfig mustMatch属性设置为false以代理所有请求。如果应用程序在此值设置为false时有效,那么您可能没有在serverUrls部分列出您的服务,或者您可能在serverUrl中输入了拼写错误。完成对代理的故障排除后,不要忘记将此属性设置为true。
启用代理的日志记录。启用后,将消息写入日志,在解决问题时可能会有用。
确保您已在应用程序代码中为代理指定了正确的位置。您可以使用浏览器开发人员工具来确定是否找到了代理。为此,请激活浏览器调试工具,然后检查网络请求并查找POST到代理的请求。如果您看到404错误,则表示未找到代理。检查请求属性以查看应用程序查找代理的路径。
来源1 - https://developers.arcgis.com/javascript/3/jshelp/ags_proxy.html
来源2 - https://developers.arcgis.com/javascript/3/jshelp/ags_secureservices.html
希望这会对您有所帮助:)
答案 1 :(得分:0)
在Proxy.ashx文件中刚刚更改
response.Flush();
response.End();
到
context.ApplicationInstance.CompleteRequest();
它开始正常工作。此更改也可在最新版本的资源代理中的proxy.ashx文件中使用。