INodeServices не работает в Azure, но работает на Localhost

#azure #asp.net-core

#azure #asp.net-core

Вопрос:

Я использую asp.net ядро 2.2 и INodeServices для взаимодействия между C # и Node. Проблема в том, что мой вызов узла отлично работает в моей среде разработки, но как только я отправляю свой код в службу приложений Azure, а затем выполняю вызов (через контроллер MVC), кажется, что он не может найти код узла для выполнения и после некоторого ожидания выдает ошибку.

С помощью Kudu я обнаружил, что моя папка node_modules, а также папка моего узла не копируются в каталог публикации при развертывании, если я не настрою их на это, установив следующий код в моем файле .csproj.

похоже, это не решает проблему, но я думаю, что моя папка NoDecode должна быть развернута рядом с моими node_nodules из-за зависимостей.

Спасибо за ваше время.

На данный момент вызов INodeServices отлично работает в моей среде разработки, но после развертывания в Azure он завершается сбоем после долгого ожидания.

     <Content Include="NodeCodeePaycoCash.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCodeePaycoCustomers.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCodeePaycoPayments.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCodeePaycoPlans.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCodeePaycoPSE.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCodeePaycoSubscriptions.js">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="NodeCodeePaycoTokens.js">
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content> 
    <Content Include="node_modules**">
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </Content>
</ItemGroup>`


Update:


under LogFiles/DetailedErrors I found this:

Most likely causes:

IIS received the request; however, an internal error occurred during the processing of the request. The root cause of this error depends on which module handles the request and what was happening in the worker process when this error occurred.

IIS was not able to access the web.config file for the Web site or application. This can occur if the NTFS permissions are set incorrectly.
IIS was not able to process configuration for the Web site or application.
The authenticated user does not have permission to use this DLL.
The request is mapped to a managed handler but the .NET Extensibility Feature is not installed.

Things you can try:

Ensure that the NTFS permissions for the web.config file are correct and allow access to the Web server's machine account.

Check the event logs to see if any additional information was logged.
Verify the permissions for the DLL.

Install the .NET Extensibility feature if the request is mapped to a managed handler.

Create a tracing rule to track failed requests for this HTTP status code. For more information about creating a tracing rule for failed requests, click here.
  

Комментарии:

1. Обновление: сервер сообщает «Указанное приложение CGI обнаружило ошибку, и сервер завершил процесс». когда происходит сбой, но иногда он просто выдает x500. 😥

2. Сообщение об ошибке слишком общее, есть ли какая-либо демонстрация для воспроизведения вашей проблемы? Поделитесь с нами подробными шагами, чтобы воспроизвести вашу проблему.

3. @TaoZhou, спасибо за ваш ответ. Я вызываю скрипт NodeJS через INodeServices в контроллере MVC. Это зависит от моей папки NoDecode, которая содержит эти вызванные сценарии. Эта папка, а также моя папка node_modules расположены в папке моего проекта, поэтому при разработке она отлично работает. Но после развертывания в Azure мои папки node_modules и my NoDecode кажутся недоступными или, в некоторых случаях (в зависимости от моего файла .csproj, как показано выше), неопубликованными, что приводит к ошибке.

4. Вы можете попробовать две вещи 1. Откройте Kudu, получите доступ к папке site wwwroot и начните устанавливать свои пакеты в Azure с помощью npm. 2. Скопируйте node_modules в любую подпапку (site wwwroot wwwroot), это обеспечит развертывание папки. Теперь откройте консоль Kudu и переместите эту папку в wwwroot. Это работает лучше всего, потому что у вас одинаковая версия модулей в среде разработки и Azure.