我有Flask网络应用程序,我正在尝试在Azure上发布。我将其部署在Web应用程序上,创建了新资源,下载了用户发布的配置文件,并使用下载的文件从Visual Studio中发布了它。一切都可以在localhost上顺利运行,但是一旦发布就会出现错误:
IIS收到了请求;但是,在处理请求期间发生内部错误。导致此错误的根本原因取决于哪个模块处理请求以及发生此错误时工作进程中发生的情况。 IIS无法访问网站或应用程序的web.config文件。如果NTFS权限设置不正确,可能会发生这种情况。 IIS无法处理网站或应用程序的配置。 经过身份验证的用户没有使用此DLL的权限。 该请求已映射到托管处理程序,但未安装.NET扩展功能。
我几乎不知道这意味着什么。这是我发布的第一个网站,非常新手。
我的项目具有以下结构。
我的Views.py使用以下代码调用senna-win32.exe:
senna_path = os.path.join('senna\\senna-win32.exe') p = subprocess.Popen(senna_path, stdout=subprocess.PIPE,stdin=subprocess.PIPE) grep_stdout = p.communicate(input=bytes(va, 'utf-8'))[0] inList = grep_stdout.decode() inList = list(inList.splitlines())
它在我的本地主机上似乎没有问题/错误,但不确定天蓝怎么回事。
根据我的经验,有很多原因会导致像您一样的问题。
对于第一种情况,reqirements.txt文件中所需的某些Python程序包未直接安装在Azure WebApp上。对于这种情况,您需要遵循官方规章进行故障排除)以解决该问题。甚至,对于其他使用python脚本解决该问题的SO线程发布MVC应用程序,您也可以尝试遵循我的解决方案。
reqirements.txt
但是,我认为您的问题可能是由senna_path代码中的引起的,这不是Azure WebApp上的有效路径。我尝试如下创建一个简单的Python脚本,以使用Azure WebApp上的Kudu控制台测试您的代码,通过command可以正常工作python test.py > test.out.txt。
senna_path
python test.py > test.out.txt
import os from subprocess import Popen, PIPE path = os.path.join('senna-win32.exe') p = Popen(path, stdin=PIPE, stdout=PIPE) grep_stdout = p.communicate(input="happy time".encode('utf-8'))[0] inList = grep_stdout.decode() inList = list(inList.splitlines()) print inList
因此,我的建议是尝试使用绝对路径D:\home\site\wwwroot\FlaskWebProject1\senna\senna- win32.exe代替senna\senna-win32.exe您的应用程序来解决问题。
D:\home\site\wwwroot\FlaskWebProject1\senna\senna- win32.exe
senna\senna-win32.exe
任何更新,请随时让我知道。