1

MFC の CHttpServerContext クラスを介して「ServerSupportFunction」を呼び出す VC6 でコンパイルされた ISAPI 拡張 dll が提供されました。コードは次のようになります (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 で実行している場合、ERROR_INVALID_PARAMETER の Windows エラー コードが返されます。

CString を使用する代わりに、最後のパラメーターを (LPWORD)"Content-Type: text/plain\r\n\r\n" に変更すると、関数呼び出しは成功します。dll は、静的 MFC を使用して VC6 を使用して Windows XP でコンパイルされます。

私はdllコードを変更したくないので、Windows 2008でこの問題が発生する理由と解決方法を知っている人はいますか?

これに影響する Windows 2008 の変更はありましたか? (何も見つかりませんでした)マシンのコードページに関連している可能性はありますか?dll を別の方法でコンパイルする必要がありますか?(おそらく UNICODE なしで)

4

1 に答える 1

1

問題が見つかりました。元のコードが送信した文字列は「HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n....」で、「HTTP/1.0 200 OK\r\n」が削除され、文字列には HTTP ヘッダーのみが含まれていたため、呼び出しは完全に機能しました。

于 2010-06-24T21:07:28.697 に答える