为JavaScript应用程序(不是Web应用程序生成器或体验生成器应用程序)部署自定义ArcGIS API到门户或ArcGIS在线服务器

585
5
跳到解决方案
06-29-2022 02:47 PM
DrewNemecekIp"id=
通过
新贡献者II

你好。我读过这个问题,//www.gobook3.com/t5/arcgis-api-for-javascript-questions/deploying-a-custom-web-map-app-on-..。,但答案并没有回答这个问题。我也搜索了ESRI文档,并做了一些谷歌搜索,但我没有找到关于将自定义JS API应用程序部署到门户服务器的文档,也没有论坛帖子给出令人满意的答案。

所以,我的问题很简单。是否可以为JavaScript应用程序(不是Web应用程序生成器或体验生成器应用程序)部署自定义ArcGIS API到门户或ArcGIS在线服务器?我在这里读到,https://doc.arcgis.com/en/arcgis-online/reference/supported-items.htm ESRI_SECTION1_6E84BE3C2FA542B9……我可以将应用程序链接到Portal,但我假设链接和托管是不同的。

谢谢。

0荣誉
1解决方案

接受的解决方案
SteveCole"id=
通过
频繁的贡献者

答案是肯定的——我目前有3个在我们的防火墙后面运行,并使用门户的身份验证来访问通过门户和我们组织的外部ArcGIS服务器发布的层。

这并不难,但ESRI的文档并不像他们想象的那么清楚。我们最终打开了一张支持票,ESRI支持人员在不到5分钟的时间里就告诉了我正确的方法。本帮助文档描述流程。基本上,开发JS应用程序(为Portal用户身份验证添加必要的OAuth代码)。

最后,在Portal中,添加Item->一个应用程序。当提示时,为你的JS应用程序指定URL。接下来,它将打开另一个窗口,并要求你重定向URI。这是同一个url。这就是我被绊倒的地方,在医生那里也不清楚。一旦我纠正了这个错误,我的应用程序将加载通过Portal发布的服务。

希望这能让你继续下去。

史蒂夫

addAppToPortalExample.jpg"li-image-url=

在原帖子中查看解决方案

5回复
SteveCole"id=
通过
频繁的贡献者

答案是肯定的——我目前有3个在我们的防火墙后面运行,并使用门户的身份验证来访问通过门户和我们组织的外部ArcGIS服务器发布的层。

这并不难,但ESRI的文档并不像他们想象的那么清楚。我们最终打开了一张支持票,ESRI支持人员在不到5分钟的时间里就告诉了我正确的方法。本帮助文档描述流程。基本上,开发JS应用程序(为Portal用户身份验证添加必要的OAuth代码)。

最后,在Portal中,添加Item->一个应用程序。当提示时,为你的JS应用程序指定URL。接下来,它将打开另一个窗口,并要求你重定向URI。这是同一个url。这就是我被绊倒的地方,在医生那里也不清楚。一旦我纠正了这个错误,我的应用程序将加载通过Portal发布的服务。

希望这能让你继续下去。

史蒂夫

addAppToPortalExample.jpg"li-image-url=

SteveCole"id=
通过
频繁的贡献者

如果你想测试东西,这是我们的技术人员给我们的一个精简的JS API示例。你只需要为你的环境调整相关的代码位:

     SAML OAuth configuration | Sample | ArcGIS API for JavaScript 4.20 
       

0荣誉
DrewNemecekIp"id=
通过
新贡献者II

谢谢你,史蒂夫。这是有益的见解。但我希望你能澄清一下你的回答。我读过帮助文档你发了帖子,在第二句中直接解决了我的问题,“当你将一个应用程序添加为一个项目时,你将共享该应用程序的URL;门户实际上并不托管应用程序文件。

由于门户实际上没有托管应用程序文件,似乎我实际上没有在门户上托管应用程序。似乎我必须在不同的服务器上托管应用程序,然后将其链接到Portal。你提到了防火墙。您的3个应用程序是托管在防火墙后面的内部服务器上,还是托管在Portal服务器上?这个问题的答案似乎是前者。

我问这个问题的原因是因为我不确定在不同的服务器上托管应用程序对我来说是一个选项。我被告知应用程序需要托管在我们的ArcGIS在线/门户服务器上,但可能有一些误解,我需要纠正这里。也许我们可以在内部服务器上托管,并通过门户提供访问?

0荣誉
SteveCole"id=
通过
频繁的贡献者

是的,为了澄清一些事情…我所有的应用程序都是“内部”使用的,所以除非我们的IT部门允许对所使用的服务进行公共访问,否则我们组织之外的任何人都无法访问。这最后一部分超出了我的范围,所以我不知道关于它的细节。

当我开始使用JS API时,我们的组织已经安装了2个ArcGIS服务器——一个是公开的,另一个是用于测试的内部安装。我们/我在ArcGIS服务器内部创建了一个子文件夹(C:\inetpub\wwwroot\…),在那里我将创建文件夹并放置我的JS应用程序文件。当我们最终采用Portal时,我得到了另一个服务器的URL,我将自己的代码复制到它上。说实话,我不确定那台服务器是不是安装了传送门的服务器。有可能,但我不知道。

Hosted应该加引号(“Hosted”)。正如我提到的,所有的HTML/JS/CSS文件仍然位于我们网络的另一部分的内部服务器上。它的托管意义在于Portal“批准”应用程序试图访问通过Portal发布的服务(同时使用Portal的用户身份验证以方便访问)。传送门就像一个允许/拒绝访问资源的俱乐部保镖。

你提到了AGOL,这是我没有经验的方面。

史蒂夫

0荣誉
DrewNemecekIp"id=
通过
新贡献者II

谢谢你史蒂夫。这澄清了你的第一个答案。似乎您所做的是实现这一点的唯一方法,即将应用程序托管在服务器上(可以是门户服务器,也可以是不同的服务器,可以是面向内部或面向外部的服务器),但通过门户共享应用程序。

我认为我的误解源于我对《传送门》的运作方式缺乏了解。我暂时忘记了一个组织在它的一个服务器上运行Portal。我想象门户服务器是位于Redlands的ESRI服务器,对于ArcGIS Online来说可能是这样(我不知道),但现在我记得在以前的组织的内部服务器上安装了ArcGIS服务器和门户。现在我只需要弄清楚在我们的服务器上通过Portal共享的应用程序是否存在任何安全问题。