我已按照本指南从IIS提供Flask应用程序:
我目前的源代码如下:
MyApp.py:
from flask import Flask
import os
app = Flask(__name__)
@app.route("/")
def hello():
return "PYTHONPATH: {0}".format(os.getenv('PYTHONPATH'))
if __name__ == "__main__":
app.run()
还有我的web.config:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings file='C:\app_secrets\secrets.config' >
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\MyApp" />
<add key="WSGI_HANDLER" value="MyApp.app" />
</appSettings>
</configuration>
我遵循互联网上许多地方的建议,通过在源代码之外有一个单独的appSettings文件并在web.config中引用它来填充秘密,因此,'C:\ app_secrets \ secrets.config看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings>
<add key="SECRETTHING" value="THING" />
</appSettings>
</configuration>
我发现的是,尽管web.config <add key=...
位工作正常,并且我可以使用os.getenv()
在MyApp.py中访问它们,但添加的键却并非如此secrets.config;将行return "PYTHONPATH: {0}".format(os.getenv('PYTHONPATH'))
更改为return "PYTHONPATH: {0}".format(os.getenv('SECRETTHING'))
会返回“ None”而不是“ THING”。
为什么我不能访问这些envar?