同一个Azure App Service中的java API和角度SPA

时间:2017-09-19 20:24:43

标签: angularjs spring api azure-web-sites azure-web-app-service

我可以在单个应用服务中运行我的java API作为/ api下的虚拟应用程序和我的前端角度SPA下的/?

在我的应用程序设置中:

  • 我将Java设置为版本8
  • 我已将Web容器设置为Tomcat 9
  • 在虚拟应用程序部分我有:
    • 虚拟目录:/和路径:site \ wwwroot
    • 虚拟目录:/ api和路径:site \ wwwroot \ api
    • 都标记为Application

在我部署了两个虚拟应用程序之后,当我转到应用程序服务URL时,我正确地获得了前端,但是还有一个对API的调用,它会在几分钟内保持挂起状态,然后以500错误结束。 如果我尝试直接访问API,我会得到相同的500错误。

API是用Spring构建的,它是我设置的web.config文件:

<applicationInitialization doAppInitAfterRestart="true">
            <add initializationPage="/api"/>
            <add initializationPage="/api/health"/>
            <add initializationPage="/api/info"/>
        </applicationInitialization>

我希望API和SPA都位于同一个域中。目前,API可以从任何域访问,对其没有任何限制。

我做错了什么?我怎样才能使它发挥作用?

1 个答案:

答案 0 :(得分:0)

根据我的经验,在将Web项目部署到Azure App Service时,无需创建virtual directory

在门户网站上设置application settings后,

enter image description here

您可以将项目生成war package放在D:\home\site\wwwroot\webapps的{​​{1}}目录下,然后重新启动您的应用。

enter image description here

请注意,如果您将war包的名称设置为KUDU,则可以通过ROOT.war直接访问您的应用,例如domain name而不添加您的战争您的请求网址中的包名称。

您还可以直接通过路径访问静态文件,例如http://jaygong.azurewebsites.net/

更新回答

根据我的经验,您可以使用两种方法在Spring启动应用服务中调用另一个应用服务API。

1.春季启动的首页调用后台方法,通过http://jaygong.azurewebsites.net/image/image.jpg请求在另一个应用服务API和自身之间传输消息,并将结果返回到前端。 HTTP问题不存在。

2. spring boot的首页直接调用另一个app service API。 你可以在这个帖子Enable CORS AngularJS to send HTTP POST request

中引用下面的js
CORS

希望它对你有所帮助。