我已经连续一周看了一个问题而且一直无法解决这个问题而且我已经绝望进行修复。
在客户端站点上,我们有两个环境:UAT和PROD。 UAT工作得很完美(请记住这一点)。我们现在正尝试将解决方案部署到PROD,但解决方案的某些部分无法正常工作。
我们开发了一个asp.net应用程序,我们提供给客户端以允许它们调用SSIS包(他们首先选择几个下拉菜单然后单击名为“invoke”的按钮)。 当用户单击Invoke按钮时,将调用名为InvokeSSIS.bat的批处理文件,该文件使用适当的参数组装对dtexec的命令行调用。
我遇到了一个特定软件包的问题,该软件包负责调用可执行文件,该软件包生成一个我将导入系统的电子表格。
可执行文件位于映射的H:\驱动器上。
我修改了InvokeSSIS.bat批处理文件以捕获批处理文件生成的命令。如果我从命令行执行此命令,它可以正常工作。从webapp Invoker,它执行包,但是负责调用可执行文件的任务不会执行,因为整个包只需要1秒钟就完成(而它应该需要大约一分钟。)
可执行文件DOES有一个GUI,但它不是交互式的。这是因为当您使用特定参数调用GUI时,它会自动以批处理模式运行并执行用于生成所需电子表格的宏。
我知道这没关系,因为它可以在UAT服务器上运行,并且可以从命令行运行!
我已检查了可执行文件的权限(右键单击可执行文件并单击属性。)我已将可执行文件的完全控制权授予指定为我正在使用的应用程序池的标识选项卡的同一用户。
有人可以帮帮我吗?正如我所说,我在这里死了!
如果您有任何想法或需要其他信息,请与我们联系。
环境(UAT和PROD)
操作系统:Windows Server 2003
IIS 6
asp.net 2.0
SQL Server 2008
谢谢!
史蒂夫
答案 0 :(得分:1)
您不能将映射驱动器用于IIS。
您必须使用\\ servername语法来访问其他系统上的文件。
答案 1 :(得分:1)
我同意user544284这至少部分是映射问题。我会忽略一下,让Web应用程序调用批处理文件以通过驱动器号映射启动远程网络驱动器上的可执行文件。
UAT盒很可能设置了一些东西来映射那些Prod缺失的驱动器号。
唯一的另一种可能性是发生安全违规。从网络驱动器运行.exe通常不受欢迎。这两个环境是否具有完全相同的Windows版本?它们是否与UAC配置相同?这里的任何差异都很重要。
这引出了一个有趣的想法。我想知道是否有人使用应用程序池使用的相同帐户凭据登录到UAT服务器,并将exe所在机器的IP地址添加到“本地Intranet”站点列表中......或者,如果他们安装了SSIS在UAT服务器上。
仅仅因为您可以登录服务器并在命令行上运行它意味着什么。您必须确定驱动器号是否完全映射到运行Web应用程序的用户以及该用户是否具有所需的安全位以及本地操作系统是否允许它。
好吧,我不能忽视它:hairbrained是我能为这个“架构”想出的最好的形容词。帮自己一个忙,回到这个板上。正如你已经发现的那样,它上面写着“脆弱”这个词。而不是构建一个批处理文件来调用dtexec,而是直接通过this或this之类的方式来完成。