2016-12-03 5 views
1

У меня есть существующее приложение для мобильных приложений Azure. Он отлично работает для клиентов iOS и Android (и внешних веб-сайтов). Я понимаю, что все параметры App Service - это, по сути, тот же продукт с разными шаблонами по умолчанию, поэтому я хотел бы добавить некоторые собственные веб-страницы в это приложение для мобильных устройств.Добавить сайт в существующее приложение Azure Mobile App (App Service)

Я создал тестовое/примерное веб-приложение, а в редакторе служб приложений в папке появился только один файл: hostingstart.html. (Интересно, что не было даже web.config. Почему?)

В моем мобильном приложении Node.js есть, конечно, большая структура папок, которая выглядит так: некоторые элементы не учитываются:

  • апи (папка)
  • node_modules (папка)
  • таблицы (папка)
  • типизации (папка)
  • app.js
  • iisnode.yml
  • package.json
  • web.config

Я попытался добавления index.html к этому корню (wwwroot) папку, а затем перейдя к http://{service name}.azurewebsites.net/index.html просто дал мне то же самое «эта услуга была созданной "как обычно.

Итак, я вошел в мой app.js файл и изменил это:

var mobile = azureMobileApps({ 
    // Explicitly enable the Azure Mobile Apps home page 
    homePage: true 
}); 

к этому:

var mobile = azureMobileApps({ 
    // Explicitly enable the Azure Mobile Apps home page 
    homePage: false 
}); 

После этого появляются следующие ошибки:

  • Переход к {service name}.azurewebsites.net возвращение:
    • не может получить/
  • Переход к {service name}.azurewebsites.net/index.html возвращений:
    • не может получить /index.html

Когда возникает ошибка, как это один из моих методов API , Я проверяю настройки в файле {api method}.json. Я не думаю, что это ответ.

Я угадываю, что есть какой-то переключатель в файле где-нибудь, что позволяет напрямую отправлять запросы *.html. У меня есть следующая запись в моем web.config файле:

<!-- First we consider whether the incoming URL matches a physical file in the /public folder --> 
<rule name="StaticContent"> 
    <action type="Rewrite" url="public{REQUEST_URI}"/> 
</rule> 

<!-- All other URLs are mapped to the node.js site entry point --> 
<rule name="DynamicContent"> 
    <conditions> 
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/> 
    </conditions> 
    <action type="Rewrite" url="app.js"/> 
</rule> 

Я предположил бы, что мне нужно что-то изменить здесь, чтобы разрешить доступ, но что?

+0

Hi @ mbm29414, все обновления еще нет? –

ответ

1

Интересно, что не было даже web.config. Почему это?

За мой опыт, если app.js/server.js/index.js содержится в wwwroot папке, затем Azure App Services будет думать, что это Node.js приложение и автоматически генерировать web.config.

Я бы предположил, что мне нужно что-то изменить здесь, чтобы разрешить доступ , но что?

Я не думаю, что вам нужно что-то изменить здесь. Согласно следующим строкам в web.config. Возможно, вы захотите рассмотреть вопрос о том, чтобы поставить статический файл (например, html, js, css и т. Д.) В папку /public под номером wwwroot.

<!-- First we consider whether the incoming URL matches a physical file in the /public folder --> 
<rule name="StaticContent"> 
    <action type="Rewrite" url="public{REQUEST_URI}"/> 
</rule> 

Ниже приведены мои протестированные скриншоты. enter image description here enter image description here

Вы также можете сделать то же самое с кодом ниже через экспресс,

app.use(express.static('public')) 

На самом деле, Azure Mobile Apps Node.js SDK является express промежуточным пакетом, который позволяет легко создать бэкенд для вашего мобильного приложения и запустить его на Azure. Среднее программное обеспечение обрабатывает определенные маршруты, такие как /tables и /api. Между тем, вы также можете смонтировать любое другое промежуточное программное обеспечение или маршруты, которые вы хотите, в свое экспресс-приложение, оставив вам возможность использовать любую предписанную «наилучшую практику», которую вы сочтете нужным.

Любые дальнейшие заботы, пожалуйста, свяжитесь с нами, чтобы сообщить мне.

Смежные вопросы