C# 从ASP.NET调用的Python脚本在IIS Express中运行良好,但在本地IIS中失败
这可能表面上看起来像一个复制品,但这是不同的,因为C# 从ASP.NET调用的Python脚本在IIS Express中运行良好,但在本地IIS中失败,c#,python,asp.net,iis,arcgis,C#,Python,Asp.net,Iis,Arcgis,这可能表面上看起来像一个复制品,但这是不同的,因为 它使用ArcGIS 10.0,在以后的版本中有很大的不同 我正在使用的10.3等版本 这指的是安装的Python的多个版本,而我只安装了 有一个 这是指我已经完成的卸载和重新安装 指的是不同的操作系统(我运行的是Win2012) 这指的是一个错误持续发生,而我得到 错误仅来自IIS 我有一个调用Python脚本的ASP.NET应用程序。代码使用System.Diagnostics.Process对象调用Python.exe并向其传递参数,如P
- 它使用ArcGIS 10.0,在以后的版本中有很大的不同 我正在使用的10.3等版本
- 这指的是安装的Python的多个版本,而我只安装了 有一个
- 这是指我已经完成的卸载和重新安装
- 指的是不同的操作系统(我运行的是Win2012)
- 这指的是一个错误持续发生,而我得到 错误仅来自IIS 我有一个调用Python脚本的ASP.NET应用程序。代码使用System.Diagnostics.Process对象调用Python.exe并向其传递参数,如Python脚本的位置和其他参数。 该进程对象在C中看起来像这样# Path和PYTHONPATH环境变量精确地指向Python可执行文件所在的位置 当我在VisualStudio2015的IIS Express中从ASP.NET C#应用程序运行Python脚本时,一切运行正常。当我通过命令控制台运行Python脚本时,一切运行正常。当我从空闲状态运行Python脚本时,一切运行正常。但是,当我将应用程序发布到IIS8.5并运行它时,Python脚本中出现了一个错误。另外,当我从VisualStudio运行应用程序并使用本地IIS而不是IIS Express时,Python脚本再次失败
任何关于我如何使其发挥作用的见解(建议和/或建设性批评)都将不胜感激。我对此做了更多的研究,现在我明白了为什么我的解决方案会起作用
Process proc = new Process();
proc.StartInfo.Verb = "runas";
proc.StartInfo.FileName = pathToPythonExe;
proc.StartInfo.Arguments = procArgs;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();
errorToConsole = proc.StandardError.ReadToEnd();
proc.WaitForExit();
messageToConsole = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
Traceback (most recent call last):
File "E:\Application Development\PublishServiceDefinition\MapPublisher\MapSdDraftCreator.py", line 1, in <module>
import arcpy
File "E:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\__init__.py", line 21, in <module>
from arcpy.geoprocessing import gp
File "E:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\geoprocessing\__init__.py", line 14, in <module>
from _base import *
File "E:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\geoprocessing\_base.py", line 598, in <module>
env = GPEnvironments(gp)
File "E:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\geoprocessing\_base.py", line 595, in GPEnvironments
return GPEnvironment(geoprocessor)
File "E:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\geoprocessing\_base.py", line 551, in __init__
self._refresh()
File "E:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\geoprocessing\_base.py", line 553, in _refresh
envset = (set(env for env in self._gp.listEnvironments()))
RuntimeError: NotInitialized
import arcinfo
import arcpy
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "e:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\__init__.py", line 21, in <module>
from arcpy.geoprocessing import gp
File "e:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\geoprocessing\__init__.py", line 14, in <module>
from _base import *
File "e:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\geoprocessing\_base.py", line 598, in <module>
env = GPEnvironments(gp)
File "e:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\geoprocessing\_base.py", line 595, in GPEnvironments
return GPEnvironment(geoprocessor)
File "e:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\geoprocessing\_base.py", line 551, in __init__
self._refresh()
File "e:\program files (x86)\arcgis\desktop10.3\arcpy\arcpy\geoprocessing\_base.py", line 553, in _refresh
envset = (set(env for env in self._gp.listEnvironments()))
RuntimeError: NotInitialized
Traceback (most recent call last):
File "E:\Application Development\PublishServiceDefinition\MapPublisher\MapSdDraftCreator.py", line 1, in <module>
import arcinfo
File "E:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcinfo.py", line 18, in <module>
gp.setProduct("ArcInfo")
RuntimeError: ERROR 999999: Error executing function.
Environment.UserDomainName = "IIS APPPOOL"
Environment.UserName = .NET v4.5
Environment.UserDomainName = x12345
Environment.UserName = ABC
Environment.UserDomainName = x12345
Environment.UserName = ABC
var envVars = Environment.GetEnvironmentVariables();
// ["APPDATA"] = "C:\\Users\\AHejlsberg.MS\\AppData\\Roaming"
ProcessStartInfo procInfo = proc.StartInfo;
// Environment = {System.Collections.Specialized.StringDictionary.GenericAdapter}
// Count = 43
// [19] = {[APPDATA, C:\Windows\system32\config\systemprofile\AppData\Roaming]}
// Environment = {System.Collections.Specialized.StringDictionary.GenericAdapter}
// Count = 49
// [21] = {[APPDATA, C:\Users\AHejlsberg.MS\AppData\Roaming]}