Я работаю над настройкой старой DLL C# (написанной в Visual Studio 2003) на сервере под управлением Windows Server 2012 R2. DLL вызывает ошибку при вызове C DLL (также скомпилированной с использованием Visual Studio 2003), которая возвращает строку. Сообщение об ошибке возникает при C DLL пытается вернуть строку следующим образом:Ошибка HTTP-статуса 502 при возврате строки из C DLL в C# DLL в Windows Server 2012
System.Net.WebException: Сбой запроса с состоянием HTTP 502: Proxy Error (Указанное сетевое имя больше не доступно.).
Код запускается без каких-либо проблем в XP и Windows 7, а C# DLL выполняется веб-службой ASP.NET.
Соответствующий C# код выглядит следующим образом:
[DllImport("ESConnect.dll", SetLastError=false, CharSet=CharSet.Ansi)]
private static extern StringBuilder EsGetText(ref StringBuilder name, ref StringBuilder strReturned, ref size);
.
.
.
StringBuilder sbReturned = new StringBuilder();
StringBuilder sbTemporary = new StringBuilder();
sbTemporary=EsGetText(ref sbName, ref sbReturned, ref size);
И код C, для функции EsGetText, является:
FNEXPORT(PSZ __stdcall, EsGetText)(PSZ *ppszName, PSZ *ppszValue, PSHORT psSize)
{
PFILE pFile = NULL;
gdClock = USE(gdClock, fnTime());
TbxGetText(*ppszName, *ppszValue, (SHORT)(psSize ? *psSize : 0));
return(*ppszValue);
}
Я могу сказать от входа, что я добавил, что EsGetText успешно заполняя значение в ppszValue, но как только выполняется команда return, возникает ошибка «HTTP status 502».
Любые идеи относительно того, что может быть причиной этой проблемы, более чем приветствуются. Спасибо.
Большое спасибо за ответ, служба использует пул приложений ASP .Net 2.0, но я рассмотрю версии .NET Framework, установленные на сервере. –