Я читал много статей. Но насколько я знаю, я сделал все. На локальном компьютере VS2010 все работает нормально. Проблема возникает только при работе на сервере IIS7.
Я хочу запустить exe файл, который отлично работает на сервере, если я начну его вручную из проводника Windows.
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
Я преобразовал каталог ClientBin
в приложение в IIS.
Но при использовании службы я получаю эту ошибку (обратный вызов в приложении 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>
По-прежнему то же сообщение. Любая идея?
* новая информация - глагол * При использовании этой функции
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.com и http://technet.microsoft.com/en-us/sysinternals/bb896653
Проблема заключалась в использовании приложения x86 в x64 IIS в сочетании с флагом verb=runas
. Теперь для приложения установлено значение anycpu (возможно, это не имеет значения), а verb
в ProcessStartInfo не настроено ни на что.