我对Azure云是全新的。当我使用VS代码将Azure Function部署到Function应用程序时,在Azure门户中,我看到错误说:
System.InvalidOperationException:在配置的存储帐户中检测到主机ID“functionAppName”的冲突。
当我尝试使用Code Test/Run选项运行函数时,Run按钮被禁用,并显示错误消息:
在portal中运行函数需要应用显式接受来自https://portal.azure.com的请求。这就是所谓的跨域资源共享(CORS)。
我不知道这些错误是怎么回事,因为使用Azure对我来说是全新的。如何解决这些问题?
错误1:
AZFD004
Diagnostic event
Error code
AZFD004
Level
Error
Message
A collision for Host ID 'functionAppName' was detected in the configured storage account. For more information, see URL.
Details
System.InvalidOperationException : A collision for Host ID 'functionAppName' was detected in the configured storage account. For more information, see URL.
Hit count
23
Timestamp
October 6, 2023 at 12:30:18 AM GMT+5:30
Help link
错误二:
Running your function in portal requires the app to explicitly accept requests from https://portal.azure.com. This is known as cross-origin resource sharing (CORS). Click here to add https://portal.azure.com to the allowed origin configuration.
__init__.py
:
import azure.functions as func
import sys
import os
current_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(os.path.join(current_dir))
# import 'test_run' module
from test_run import func_1, func_2, func_3
def main(req: func.HttpRequest) -> func.HttpResponse:
try:
func_1()
func_2()
func_3()
name = req.params.get('name')
if not name:
return func.HttpResponse("Please pass a 'name' parameter in the query string.", status_code=400)
return func.HttpResponse(f"Hello {name}. The function triggered successfully.")
except Exception as e:
return func.HttpResponse(f"An error occurred: {str(e)}", status_code=500)
test_run.py
:
def func_1():
'''some code here'''
def func_2():
'''some code here'''
def func_3():
'''some code here
2条答案
按热度按时间ipakzgxi1#
我已经使用了你的代码,并在本地测试,以及在门户网站后部署,它为我预期的工作。
验证码:
test_run.py-
本地测试结果-
在测试时,您需要传递
name=<anything>
以获得结果。在门户-
你需要像下面这样传递name参数。
vbopmzt12#
错误1
我假设你还没有编辑上述错误消息,它的逐字说
A collision for Host ID 'functionAppName' was detected in the configured storage account. For more information, see URL.
?如果你的函数应用程序实际上被称为functionAppName
,我会非常惊讶,因为函数应用程序的名称必须是全局唯一的,所以我会说,看起来你的配置中有一个复制+粘贴错误。执行类似git grep -i 'functionAppName'
的操作,在repo中搜索字符串functionAppName
的所有示例,并将它们替换为Function App的实际名称。错误2
我不太清楚这是什么问题?错误消息告诉您需要将
https://portal.azure.com/
添加到Function App的CORS设置中允许的来源列表中。有关如何执行此操作的更多信息,请参阅以下MS文档:跨域资源共享。