AN HTTPD ゲストブック/コメント集(2000年8月22日13:36)


中田昭雄 nakata@st.rim.or.jp 2000/08/23 21:34

ぐっぴーさん、
おかしいですね。
TCGIRequest.GetFieldByName("PATH_INFO") の結果が空になるのでしょうか?

(1)他の変数、たとえば、REMOTE_ADDR や REQUEST_METHOD なども空でしょうか?
(2)DLL の呼び出しは URLに xxxx.DLL/path/info のようにエキストラパスをつけるやりかたでしょうか? それとも、拡張子に対しる実行プログラムとしてその DLL を指定するやりかたでしょうか?


ぐっぴー sheepdog@dddd.ne.jp 2000/08/23 09:11

お世話かけます
isapi.logにはエラーは出ていない様です。

取り込み部分は以下の様になっています。

function TCGIRequest.GetFieldByName(const Name: string): string; 
var
Buffer: array[0..4095] of Char;

function StripHTTP(const Name: string): string;
begin
if Pos('HTTP_', Name) = 1 then
Result := Copy(Name, 6, MaxInt)
else Result := Name;
end;

begin
SetString(Result, Buffer, GetEnvironmentVariable(PChar(Name), Buffer, SizeOf(Buffer)));
if Result = '' then
SetString(Result, Buffer, GetEnvironmentVariable(PChar(StripHTTP(Name)), Buffer, SizeOf(Buffer)));
end;
宜しくお願い致します。


中田昭雄 nakata@st.rim.or.jp 2000/08/22 20:30

ぐっぴーさん、
ISAPIの本家に比べると AN HTTPD の ISAPIのサポートレベルはかなり低いです。
isapi.log をとってみて、何かエラーメッセージは出ていませんでしょうか?

また、
PATH_INFO の取得は、(1)ECB (2)GetServerVariable (3)GetEnvironmentVariable (4)getenv のいずれでしょうか?
POST の標準入力の取得はどうやっているのかお知らせ下さい。特に読み込みの長さの指定はどうされているでしょうか?
HttpExtensionProc の実行内容部分のソース(の要点)をお知らせ下さるのでも結構です。


ぐっぴー sheepdog@dddd.ne.jp 2000/08/22 13:36

はじめまして
DelphiでISAPIでDLLを作成しているのですが、
IISでは正常に取得出来るPATH_INFOが取得
できません。また、POSTで文字列を取得した場合
最後にごみが入る場合があるのですが、入る
文字列は"process.log"とかなので習得文字数
が多くて後のメモリまで参照しているのか
なと思うのですが私の環境だけしょうか?
やっぱり自分で標準入力から取ってくる
ルーチンを組まないといけないのでしょうか?