PHP 5.4 を使用して Windows Server 2008 R2 で IIS7 を実行しています。ファイルをアップロードおよびダウンロードする PHP スクリプトを使用して、SSL 暗号化を使用して Web サイトを作成しました。また、Visual Studio 2012 (C#) を使用して、WebClient オブジェクトを使用してアップロード/ダウンロードを実行するクライアント アプリケーションを作成しました。ダウンロードは完全に機能します。ただし、(WebClient を使用して) ファイルをアップロードしようとすると、WebException が発生します。
Message: The remote server returned an error: (500) Internal Server Error.
Status: System.Net.WebExceptionStatus.ProtocolError
InnerException: null;
PHP アップロード スクリプトは現在空白です (ファイルはサーバー上の一時ディレクトリにアップロードされ、その後自動的に削除されます)。エラーなしでブラウザで PHP スクリプトを実行できることを付け加えておきます (つまり、何もアップロードしません)。最初は、IIS サービス アカウントが一時ディレクトリにアクセスできないのではないかと考えましたが、明示的なアクセス許可を追加しても問題は解決しませんでした。何か案は?
私のC#コードは次のとおりです。
public static void UploadFile(Uri uri)
{
try
{
using (WebClient client = new WebClient())
{
// Ignore SSL warnings due to unsigned certificate.
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
client.Credentials = CredentialCache.DefaultNetworkCredentials;
// Get a path/name of a new temporary file.
String tempFile = Path.GetTempFileName();
// Create a 1KB temporary file.
using (var fileStream = new FileStream(tempFile, FileMode.Create, FileAccess.Write))
{
fileStream.SetLength(1024);
}
// Upload the file to the server.
client.UploadFile(uri, tempFile);
// Delete temporary file.
File.Delete(tempFile);
}
}
catch (WebException ex)
{
MessageBox.Show(ex.ToString());
}
}
更新 1 - IIS ログ ファイル
2013-02-04 17:05:05 155.14.123.53 POST /Archive/uploadTest.php - 443 - 155.14.123.208 - 401 2 5 0
2013-02-04 17:05:05 155.14.123.53 POST /Archive/uploadTest.php - 443 HYPER\JOHNSD 155.14.123.208 - 500 0 0 15