使用VS2012 Web deploy发布Flask项目后访问报500.19错误如何解决
解决方案
核心原因说明
HTTP 500.19 错误码 0x8007000d 本质是IIS缺少对应功能组件,无法解析web.config里的特定配置节点,并非XML语法错误导致。你当前的问题同时包含IIS组件缺失和web.config配置错误两类问题,按以下步骤逐一修正即可:
步骤1:安装缺失的IIS功能组件
- 安装URL重写模块:你的web.config中使用了
<rewrite>配置段,默认IIS未集成该模块,需手动下载对应系统版本的IIS URL Rewrite安装包完成安装。 - 启用CGI功能:打开「控制面板>程序和功能>启用或关闭Windows功能」,依次展开「Internet Information Services>万维网服务>应用程序开发功能」,勾选「CGI」选项后确认安装,才能支持你配置的Python FastCGI处理程序。
- 兼容.NET Framework版本:确认你的服务器已安装.NET Framework 4.0,若安装的是更高版本,后续需要同步修改web.config中的targetFramework配置。
步骤2:修正web.config配置错误
你提供的web.config存在多处路径和规则错误,直接替换对应节点内容即可:
- 修正虚拟环境和路径配置:
<appSettings> <add key="WSGI_ALT_VIRTUALENV_HANDLER" value="FlaskWebProject5.app" /> <!-- 注意此处指向的是虚拟环境的activate_this.py,而非python.exe,路径改为你站点实际物理路径下的对应文件 --> <add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS" value="C:\inetpub\wwwroot\flask_env_three\Scripts\activate_this.py" /> <add key="WSGI_HANDLER" value="ptvs_virtualenv_proxy.get_venv_handler()" /> <!-- PYTHONPATH改为站点实际物理路径 --> <add key="PYTHONPATH" value="C:\inetpub\wwwroot" /> </appSettings>
- 修正静态文件重写规则:原重写目标错误填写了正则表达式,改为实际路径即可
<rule name="Static Files" stopProcessing="true"> <match url="^static/.*" ignoreCase="true" /> <action type="Rewrite" url="/FlaskWebProject5/static/{R:1}" appendQueryString="true" /> </rule>
- 修正targetFramework配置(可选):如果确认.NET版本不兼容,直接将
<compilation debug="true" targetFramework="4.0" />中的版本号改为你服务器安装的.NET Framework版本即可,Flask项目无需依赖ASP.NET,无特殊需求也可直接删除整个<system.web>配置段。 - 确认FastCGI路径有效性:检查
D:\Python34\python.exe和D:\Python34\Scripts\wfastcgi.py两个文件真实存在,并且已给IIS运行用户(IUSR、IIS_IUSRS组)授予两个文件的读取、执行权限。
步骤3:配置站点权限
右键点击站点根目录C:\inetpub\wwwroot,选择「属性>安全」,添加IIS_IUSRS用户组,授予其「读取和执行、列出文件夹内容、读取」权限后保存。
全部配置完成后重启IIS站点,重新访问即可正常加载。
内容的提问来源于stack exchange,提问作者idk
相关产品推荐
相关产品推荐

