我得到了一个在 VC6 中编译的 ISAPI 扩展 dll,它通过 MFC 的 CHttpServerContext 类调用“ServerSupportFunction”。代码看起来像(假设 Ctx 是 CHttpServerContext 类的对象)
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);
在 windows 2003 IIS6 上运行时,此代码工作正常。如果在 windows 2008 IIS7 上运行,它会返回一个 windows 错误代码 ERROR_INVALID_PARAMETER
如果我将最后一个参数更改为 (LPWORD)"Content-Type: text/plain\r\n\r\n" 而不是使用 CString ,则函数调用成功。该 dll 在 windows xp 中使用 VC6 和静态 MFC 编译。
由于我不愿意更改 dll 代码,有谁知道这个问题在 windows 2008 中出现的原因以及如何解决?
Windows 2008 中是否有任何变化影响到这一点?(我没有找到)它可以与机器代码页有关吗?dll应该以不同的方式编译吗?(可能没有UNICODE)