Точка входа DllImport для функции взаимодействия не найдена в ieframe.dll, работающем под Azure - PullRequest
0 голосов
/ 14 сентября 2011

В моем приложении C #, работающем под Azure, мне нужно использовать Interop / DllImport для вызова 'IEGetProtectedModeCookie' в ieframe.dll

Вот подпись:

  [DllImport("ieframe.dll", CharSet = CharSet.Unicode, EntryPoint = "IEGetProtectedModeCookie", SetLastError = true)]
  public static extern int IEGetProtectedModeCookie(String url, String cookieName, StringBuilder cookieData, ref int size, uint flag);

Я добавил ieframe.dll в папку bin моего проекта, и у меня есть ссылка на SHDocVw , которая генерирует файл Debug или Retail Interop.SHDocVw.dll в моем объекте каталог.

Когда я тестирую это на своем компьютере разработчика, все работает нормально, но при развертывании в Azure я получаю следующую ошибку времени выполнения:

System.EntryPointNotFoundException: невозможно найти точку входа с именем «IEGetProtectedModeCookie» в DLL «ieframe.dll». в Predicere.Utilities.LoginUtils.IEGetProtectedModeCookie (URL-адрес строки, String cookieName, StringBuilder cookieData, Int32 & size, флаг UInt32) at Predicere.Utilities.LoginUtils.GetProtectedModeIECookieValue (String cookieName, Boolean isFacebookPage) в бла ...

Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Итак, мы наконец нашли решение, используя обратную связь от S.O. по другому отдельному, но связанному вопросу.

Проблема в том, что IEGetProtectedModeCookie не был представлен до IE8, но базовый веб-экземпляр Azure основан на IE7.

Аромат ОС управляется атрибутом osFamily в:

<ServiceConfiguration serviceName="Foobar" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">

Этот параметр устанавливает Windows Server 2008 SP2, основанный на IE7.

Если мы изменим атрибут osFamily следующим образом, мы получим Windows Server 2008 R2, основанный на IE8:

<ServiceConfiguration serviceName="Foobar" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="2" osVersion="*">

Более подробную информацию можно найти в этой записи блога, особенно если вы хотите обновить свой экземпляр Azure для использования IE9 (что, оказывается, нетривиально).

http://sajojacob.com/blog/2011/03/startup-tasks-elevated-privileges-vm-role/

0 голосов
/ 15 сентября 2011

IEGetProtectedModeCookie был представлен в IE8. Может ли быть так, что установлен только IE6 или IE7?

...