IIS7不会通过Process Start启动我的Exe文件

时间:2011-12-07 11:23:56

标签: .net silverlight iis-7

我读过很多文章。但据我所知,我已经完成了所有工作。 在本地计算机VS2010上一切正常。只有在IIS7服务器上工作时才会出现此问题。

如果我从Windows资源管理器手动启动它,我想启动一个在服务器上运行良好的exe文件。

 Dim fiExe As New IO.FileInfo(IO.Path.Combine(diBase.FullName, "ClientBin\ConvertAudio.exe"))
    Dim SI As New ProcessStartInfo(fiExe.FullName, args)
    SI.Verb = "runas"
    SI.UseShellExecute = True
    SI.WorkingDirectory = fiExe.Directory.FullName
    Dim P As Process = Process.Start(SI)
    P.PriorityClass = ProcessPriorityClass.Idle

我已经在IIS中的应用程序中转换了目录ClientBin

但是当使用该服务时,我收到此错误(Silverlight应用程序中的回调):

{System.Security.SecurityException ---> System.Security.SecurityException: Sicherheitsfehler
   bei System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   bei System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
   bei System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   bei System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   bei System.Net.WebClient.WebClientWriteStream.<Dispose>b__3(IAsyncResult ar)}

我试图存储文件“clientaccesspolicy.xml” 在ClientBin

这样的目录中
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
    <cross-domain-access>
        <policy>
            <allow-from http-request-headers="*">
                <domain uri="*"/>
            </allow-from>
            <grant-to>
                <resource path="/" include-subpaths="true"/>
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy> 

仍然是同一个消息。 有什么想法吗?

ISS7 Commandline configuration

permission in Windows Explorer

*新信息 - 动词* 使用此功能时

Dim startInfo As New ProcessStartInfo(fiExe.FullName)
            Dim V As String = ""
            For Each verb As String In startInfo.Verbs
                V &= V & ", "
            Next
            Throw New Exception("Verbs=" & V)

我收到了这个结果:

  

动词= ,,,,,,,,

*找到解决方案* 我在使用http://www.fiddler2.comhttp://technet.microsoft.com/en-us/sysinternals/bb896653时找到了解决方案 问题是在x64 IIS上使用x86应用程序并结合verb=runas标志。现在应用程序设置为anycpu(也许这无关紧要)并且ProcessStartInfo上的verb未设置为任何内容。

3 个答案:

答案 0 :(得分:13)

<强> 编辑:

经过漫长的旅程,我和Nasenbaer找到了以下内容。 IIS运行EXE失败的可能原因是:

  1. 缺少IIS用户的权限,例如应用程序池用户或网络服务(在IIS6中)。
  2. x86 EXE在x64机器问题上运行。
  3. 典型的EXE故障问题,例如缺少依赖性。
  4. 原始答案:

    您需要在EXE所在的目录上为IIS AppPool\DefaultAppPool用户分配FullControl安全权限。这是尝试运行该过程的用户(假设您使用的是DefaultAppPool ),如果没有适当的权限,则无法执行此操作。

    手动运行EXE时,您正在使用Windows登录用户。这就是为什么你可以手工午餐。 IIS使用应用程序池用户。

    要添加权限,请执行以下操作:

    1. 转到目录属性
    2. 安全标签
    3. 编辑.. - &gt;添加IIS AppPool\DefaultAppPool
    4. 检查FullControl
    5. <强>截图

      enter image description here enter image description here

答案 1 :(得分:5)

这对我有什么帮助: 在应用程序池中设置 Identity = LocalSystem

  1. 打开应用程序池
  2. 找到您的池(默认情况下为DefaultAppPool)
  3. 点击“高级设置”
  4. 将身份更改为“LocalSystem”
  5. 希望它会帮助某人......

答案 2 :(得分:-2)

var p = new Process
{
    StartInfo =
    {
        FileName = Path,    
        UseShellExecute = false,
    }
};
p.Start();