Dim si As New System.Diagnostics.Process()
si.StartInfo.WorkingDirectory = tortoisesvnsetupfilefolder
si.StartInfo.UseShellExecute = False
si.StartInfo.FileName = "cmd.exe"
si.StartInfo.Arguments = "/C START /W TortoiseProc.exe /command:update /path:""& project path&"" /closeonend:1"
si.StartInfo.CreateNoWindow = True
si.StartInfo.RedirectStandardInput = True
si.StartInfo.RedirectStandardOutput = True
si.StartInfo.RedirectStandardError = True
si.Start()
si.WaitForExit()
当我在visual studio中运行此代码时,它可以工作,但当我在IIS中创建网站并运行项目进程启动时,它不工作,服务启动,但在任务
中保持活跃我在用同一台电脑。当我在visualstudio中运行项目时,这个代码运行完美,快速和更新的仓库2. 问题是在IIS中,我在IIS下为相同的项目创建了网站,当我运行IIS项目时,它没有工作到si.Start()代码是工作的,它启动了乌龟客户端服务,这个服务保持活跃(在任务管理器中),并且在si.Start()之后没有完成,没有发生任何事情,它保持活跃,没有进程响应当你在本地运行+启动记事本并且也在本地运行web服务器时(例如在开发期间),那么你当然会看到记事本,因为你运行在与web服务器相同的计算机上。
如果你在一个真正的web服务器上运行,那么你的浏览器和你在不同的计算机上。Note pad是WILL和DOES启动很好,但它在web服务器上启动和显示,没有人能看到!!!!
那么,在你的台式机和电脑上,你同时运行IIS和记事本。因此,在开发模式和阶段-这看起来工作正常。
但是你不能将windows程序重定向到浏览器。(windows程序可以直接使用你的显卡)。
但是,如果你在运行web服务器的同一台计算机上启动记事本呢?(你正在这么做!!)然后notepad将在web服务器上启动,而不是在您的计算机上。
如果你能够走到web服务器,你会看到notepad启动并运行在该服务器上。但是,你不能在你的客户端电脑上看到或使用这样的桌面程序——它只运行一个浏览器。
所以,你不能在我的电脑上启动一个进程来访问你的网站!
编辑:用户理解这是运行在服务器端,并运行在web服务器控制台。
嗯,我有机会启动一个运行IIS的真实服务器。我可以确认上面的代码在真实服务器上不起作用。
原因呢?
服务器上的IIS是作为服务运行的,在服务器上,它们不允许shell out。以前有权限这样做,但据我所知,现在没有了。
即使你将应用程序池设置为以服务器管理员帐户运行(非常糟糕的主意),我发现代码也无法工作。
那么,要使这个工作呢?好吧,你可以在实际的web服务器上做一些严重的剪切和更改-并且你必须弄乱很多权限才能做到这一点。
我没有一个很好的答案,但是在谷歌上搜索了一下,我们发现这通常是不允许的。
因此,这可能取决于您使用的服务器版本。我很确定这个洞是在2012年版本(10年前)关闭的。
你可以在这里尝试一些想法:
Foo。CMD won't output lines in process(在网站上)
(但是,即使上面的链接是10多年前的-现在已经过时了)。