Приложение-функция Azure выполняется, когда сделан запрос OPTIONS? - PullRequest
0 голосов
/ 17 мая 2019

Я создал функциональное приложение с помощью портала Azure. Я проверил POST и OPTIONS как разрешенные методы. Я удалил настройки CORS по умолчанию и разрешил *. Теперь, когда я выполняю запрос OPTIONS с помощью клиента REST, я получаю сообщение об ошибке. Я проверил логи и обнаружил следующее. Мой вопрос: звучит так, как будто моя функция выполняется, и когда заголовок авторизации и / или полезная нагрузка не найдены, выдается ошибка. Может быть, я не понимаю запрос ОПЦИИ. Какие варианты можно предотвратить в приложении функций портала Azure?

TIA за любую помощь.

2019-05-17T09:16:26.479 [Info] Executing HTTP request: {
  "requestId": "38609669-59f4-4ded-9685-ef67af3c2909",
  "method": "OPTIONS",
  "uri": "/api/ProcessEntries"
}
2019-05-17T09:16:26.479 [Info,ProcessEntries] Function started (Id=41b4691d-98ec-432f-8e6e-de1e1dcd13b6)
2019-05-17T09:16:26.479 [Info,ProcessEntries] Executing 'Functions.ProcessEntries' (Reason='This function was programmatically called via the host APIs.', Id=41b4691d-98ec-432f-8e6e-de1e1dcd13b6)
2019-05-17T09:16:26.495 [Error] A ScriptHost error has occurred
2019-05-17T09:16:26.495 [Error] Cannot perform runtime binding on a null reference
2019-05-17T09:16:26.526 [Error,ProcessEntries] Exception while executing function: Functions.ProcessEntries. Microsoft.Azure.WebJobs.Script: One or more errors occurred. Anonymously Hosted DynamicMethods Assembly: Cannot perform runtime binding on a null reference.
2019-05-17T09:16:26.573 [Error,ProcessEntries] Exception while executing function: Functions.ProcessEntries
2019-05-17T09:16:26.573 [Error,ProcessEntries] Cannot perform runtime binding on a null reference
2019-05-17T09:16:26.573 [Error,ProcessEntries] Function completed (Failure, Id=41b4691d-98ec-432f-8e6e-de1e1dcd13b6, Duration=87ms)
2019-05-17T09:16:26.573 [Error,ProcessEntries] Executed 'Functions.ProcessEntries' (Failed, Id=41b4691d-98ec-432f-8e6e-de1e1dcd13b6)
2019-05-17T09:16:26.573 [Error,ProcessEntries] Cannot perform runtime binding on a null reference
2019-05-17T09:16:26.573 [Error,ProcessEntries] Function had errors. See Azure WebJobs SDK dashboard for details. Instance ID is '41b4691d-98ec-432f-8e6e-de1e1dcd13b6'
2019-05-17T09:16:26.573 [Error,ProcessEntries] Cannot perform runtime binding on a null reference
2019-05-17T09:16:26.588 [Error] {"id":"eada812b-1530-4d26-85e3-4c6e6e243f01","requestId":"38609669-59f4-4ded-9685-ef67af3c2909","statusCode":500,"errorCode":0,"message":"An error has occurred. For more information, please check the logs for error ID eada812b-1530-4d26-85e3-4c6e6e243f01"}
2019-05-17T09:16:26.588 [Error] Cannot perform runtime binding on a null reference


Ответы [ 2 ]

0 голосов
/ 17 мая 2019

В случае, если кто-то сталкивается с этим позже ...

Оказывается, проблема в том, что мое функциональное приложение выполнялось, даже когда был отправлен запрос OPTIONS.Я этого не ожидал.И это было взрывом, потому что с ним не было отправлено полезного груза.Из-за характера проекта я знал, что всегда будет полезная нагрузка с POST, и никогда не думал, что запрос OPTIONS также выполнит этот код.Как только я включил в свою функцию проверку на ноль, все было хорошо, и я начал получать статус = 200 для запросов OPTIONS.

Полагаю, я должен был вспомнить, что нет ничего, что могло бы быть верным.

0 голосов
/ 17 мая 2019

Возможно, ответ на мой собственный вопрос (который на самом деле не является ответом) позволяет мне опубликовать продолжение более чистым способом.

Я не понимаю, почему запрос опций ищет что-то связывающее. Я могу понять, почему моя функция будет, да. У него есть связи с некоторыми учетными записями хранилища, и он ожидает полезную нагрузку. Но почему опционы требуют заботы обо всем этом? Он пытается выполнить функцию?


{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "post",
        "options"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "table",
      "name": "outShazamPayloadsTable",
      "tableName": "czShazamPayloadsTable",
      "connection": "czshazam19storageaccount_STORAGE",
      "direction": "out"
    },
    {
      "type": "queue",
      "name": "outputQueueItem",
      "queueName": "czshazamqueue",
      "connection": "czshazam19storageaccount_STORAGE",
      "direction": "out"
    }
  ],
  "disabled": false
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...