J'ai reçu une extension ISAPI compilée dans VC6 qui appelle "ServerSupportFunction" via la classe CHttpServerContext du MFC. Le code ressemble (en supposant CTX objet de la classe CHttpServerContext)Passage de CString à la fonction IIS ServerSupportFunction dans l'extension ISAPI
CString str;
str = "Content-Type: text/plain\r\n";
str += "Content-Length: 200\r\n";
str += "\r\n";
DWORD len = str.GetLength();
Ctx->ServerSupportFunction(HSE_REQ_SEND_RESPONSE_HEADER,NULL,
&len,
(LPWORD)(LPCTSTR)str);
lors de l'exécution sur Windows 2003 IIS6, ce code fonctionne très bien. Si en cours d'exécution sur Windows 2008 IIS7 il renvoie un code d'erreur windows de ERROR_INVALID_PARAMETER
si je change le dernier paramètre être (LPWORD) "Content-Type: text/plain \ r \ n \ r \ n" instaed de en utilisant CString, l'appel de fonction réussit. La DLL est compilée dans Windows XP avec VC6 avec MFC statique.
Depuis que je hésite à changer le code dll, quelqu'un sait-il une raison pour laquelle ce problème se produit dans Windows 2008 et comment il peut être résolu?
Y a-t-il eu des changements dans Windows 2008 affectant cela? (Je n'en ai trouvé aucun) Peut-il être lié à la page de codes de la machine? Est-ce que le dll compilé differenatly? (Peut-être sans UNICODE)
Vous pouvez également ajouter ceci avant votre code: 'Ctx-> m_bSendHeaders = FALSE;' Cela devrait empêcher MFC d'ajouter ses propres en-têtes sauf la version HTTP ("HTTP/..."). – Nux