- - PR -
.NET2.0環境でビルドしたManagedC++モジュールをCGIとして実行するとエラーが発生する
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-08-21 17:30
.NET2.0環境でビルドしたManagedC++モジュール(/clr:oldSyntaxコンパイルオプションをつけたC++実行モジュール)をCGIとして
実行しようとすると、エラーが発生してしまいます。 回避方法をご存知のかたがいらっしゃいましたら、ご教授をお願いいたします。 詳細: .NET 1.1 (VS2003)で作成したC++のCGIモジュール(.EXE)を、.NET2.0に移行するために VS2003のプロジェクトをVS2005用のプロジェクトに変換し、ビルドしなおしたところ、 CGIとして動作しなくなってしまいました。 サンプルプログラムを確認したところ、VS2005では「/clr:oldSyntax」オプションをつけてビルドすると CGIとして実行できませんでした。 共通言語ランタイムサポート(/clr)の設定でビルドした場合も同様の結果になりました。 "/clr"オプションをはずすと動作しました。 (VS2003では、/clrオプションを使用してもCGIとして動いていました。) エラー内容 ------------------------ 「VisualStadio Just-In-Time デバッガ」画面 が表示され、CGIの起動に失敗する。 サーバ環境 ------------------------ ・IIS 5.1 .NET FrameWork 2.0 ・仮想フォルダ名称を「test」 ・仮想フォルダの設定 仮想ディレクトリタブ: 実行アクセス権:スクリプトおよび実行可能ファイル アプリケーション保護:中 ASP.NETタブ: ASP.NETバージョン:2.0.50727 ディレクトリセキュリティ - 認証方法: 匿名アクセスのユーザを、仮想フォルダにアクセス権を持つユーザに設定 ------------------------ 実行方法 ------------------------ ※作成したEXEモジュールが"Sample.exe"だった場合 IE6を起動し、 http://localhost/test/Sample.exe をアドレスバーに入力する Sampleプロジェクトの設定 ------------------------ ・VisualStadio2005 ・C++コンソールアプリ ・共通プロパティ - 参照設定 : なし(すべて削除しました) ソース----------------------- ※実行に成功すると、ブラウザに「OKOKOKOKOKOK」と表示されます。 #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #define __HTTP_STATUS_200__ "Status: 200 OK" static void sendResponse( ) { printf( "%s\n",__HTTP_STATUS_200__ ); printf( "Content-Type: text/html\n" ); printf( "%s\n","Content-Length: 12" ); printf( "\n" ); printf("%s", "OKOKOKOKOKOK"); } static void sendResponseError( ) { printf( "%s",__HTTP_STATUS_200__ ); printf( "\nContent-Type: text/html" ); printf( "\n%s","Content-Length: 12" ); printf( "\n" ); printf("%s", "ERrERrErrErr"); } int _tmain(int argc, _TCHAR* argv[]) { try { FILE *fp; if ((fp = fopen("a.txt", "w+")) == NULL) { sendResponseError(); exit(1); } fputs("abcdef", fp); fclose(fp); sendResponse( ); } catch( ... ) { } return 0; } |
|
投稿日時: 2009-01-15 17:11
同じ現象のように思われるのですが、
Visual Studio 2003で動作していたCGIプログラムをVisual Studio 2005でコンパイルし、実行すると、私の環境でも ハンドルされていない例外: System.ArgumentException: パラメータが間違っています。 (HRESULT からの例外: 0x80070057 (E_INVALIDARG)) というエラーが発生し困っています。 いろいろと検索をし、調べてみましたが、ヒントになりそうな内容は、Hildaさんの投稿しかみつかりませんでした。 投稿された内容について、何か進展がありましたら教えてもらえないでしょうか? ずいぶん、過去の投稿に対するお願いで申し訳ありませんが、よろしくお願いします。 |
|
投稿日時: 2009-01-15 22:27
こんにちは。
OS のバージョンが書いていないのですが、もし Windows 2003 (IIS6) であれば、以下の KB に合致しているかもしれないですね。 Error message when a CGI program that is written by using the .NET Framework 2 makes Web service calls: "System.ArgumentException: Illegal characters in path" http://support.microsoft.com/kb/922780/en-us HTH |
|
投稿日時: 2009-01-15 23:42
共有のためにリンクしておきます。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=4298130&SiteID=7 |
|
投稿日時: 2009-01-16 09:13
ハルさん、ありがとうございます。
http://support.microsoft.com/kb/922780/en-us 開発環境は、WindowsXP IIS5.1ですが、KBに書かれている通り、 アプリケーションのマッピングにcgiプログラムのパスを登録すると、問題が解消できました。 |
1