IIS 7.0 への SendRequestEx関数

[戻る]
sheep 2009/05/19(火) 17:03:07
はじめまして、sheepと申します。

Windows Server 2003 のHTTPサーバ(IIS6.0)にアップロードする関数を、Windows 
Server 2008 のHTTPサーバ(IIS7.0)にも対応するように変更しようとしていますが、なか
なかうまくいかず、困っています。

以下、その関数の一部を記載します。

=========================================================================

DWORD dwHttpRequestFlags =INTERNET_FLAG_EXISTING_CONNECT |  
INTERNET_FLAG_NO_AUTO_REDIRECT |INTERNET_FLAG_RELOAD;

// Create INet session
CInternetSession* pInetSession = new CInternetSession(NULL, 1, 
INTERNET_OPEN_TYPE_DIRECT, NULL, NULL,INTERNET_FLAG_DONT_CACHE);

CString    szServerName = "xxx.xxx.xxx.xxx";
INTERNET_PORT    nPort = 80;
CString    szUserName = "DomainName\\UserName";
CString    szPassword = "Password";
CString    szPath = "/VirturlDir/123";

CHttpConnection* pHttpConnection = pInetSession->GetHttpConnection
(szServerName, nPort, szUserName, szPassword);

CHttpFile* pFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_PUT, 
szPath, NULL, 1, NULL, NULL, dwHttpRequestFlags);

//read from local file
CString    szTest(_T("test"));

pFile->SendRequestEx( szTest.GetLength() );
pFile->WriteString( szTest );
pFile->EndRequest();

/*
pFile->SendRequest(NULL, 0, (void *)&szTest, szTest.GetLength());
*/
=========================================================================

このコードを2008 Server(IIS 7.0)に対して動かすと、EndRequest()関数でThrowされて
しまい、GetLastErrorでエラーを見てみると、"The action must be retried"(12032)と
言われてしまいます。
このコードを2003 Server(IIS 6.0)に対して動かすと、問題なくファイルがアップロード
されます。
また、2008 Serverでも、SendReqestEx〜EndRequestの行をSendReqeuest(コメントアウト
部分)に置き換えて実行すると、こちらも問題なくアップロードされます。

2008 Server側のIISの設定は、WebDAV等、一通りしてあるつもりです。
また、認証方法は、Windows認証が設定してあります。

申し訳ありませんが、ご教授よろしくお願いします。

古いスレッドには追加発言できません。