1>今日友人が質問しました:
ファイル コントロールを使用して画像、ドキュメント、その他のファイルのパスを読み取るときはエラーが発生しないのに、ビデオ ファイル (rmvb など) を読み取るときにページを表示できないというエラーが発生するのはなぜですか。
コードスニペットは次のとおりです。
private void btnUpFiles_Click(オブジェクト送信者、System.EventArgs e)
{
文字列パス名=this.File1.PostedFile.FileName.ToString();
Response.Write(パス名);
2
>問題の解決を開始します。
パス文字列の取得に問題があるのではないかと思い、最初にパスとファイル名を取得し、次にファイル拡張子を取得して文字列として保存しましたが、常にエラーが発生しました。コードスニペットは次のとおりです。
string fullname=this.File1.PostedFile.FileName.ToString();//フルパスを取得します
string firstname=fullname.Substring(0,fullname.LastIndexOf(".")+1);//パスとファイル名を取得し、ファイルのサフィックスを削除します
Session["firstname"]=firstname;//セッションに保存
char [] spitter={'.'};//文字列の分割に使用される区切り文字
string [] fileName=this.File1.PostedFile.FileName.Split(spliter);//分割されたフルパスの各部分を配列に保存します
Session["lastname"]=fileName[fileName.Length-1];// 保存セッションとしての配列内の最後の要素 (名前の接尾辞)
Response.Redirect("test.aspx");//テストのためにこのページに渡したいと思います。
上記の方法は依然として失敗し、エラーの原因は文字列とはまったく関係ないようです。
3>ネットユーザー「@@」は、これは httpRuntime の問題であると示唆しました (ありがとう):
問題の解決策: 次のコードを web.config の <system.web></system.web> に追加します。
<httpRuntime 実行タイムアウト = "600" maxRequestLength = "951200"
useFullyQualifiedRedirectUrl="true" minFreeThreads="8"
minLocalRequestFreeThreads="4" appRequestQueueLimit="100" enableVersionHeader="true"/>
4>MSDN からの説明:
httpRuntime は、asp.net アプリケーションへの要求を処理する方法を決定するための asp.net http ランタイム設定です。
実行タイムアウト: リクエストの実行に許可される最大時間制限を秒単位で示します。
maxRequestLength: ASP.NET でサポートされる最大ファイル アップロード サイズを示します。この制限は、ユーザーがサーバーに大量のファイルを渡すことによって引き起こされるサービス拒否攻撃を防ぐために使用できます。指定されたサイズは KB 単位です。デフォルト値は 4096 KB (4 MB) です。
useFullyQualifiedRedirectUrl: クライアント リダイレクトが完全修飾されているかどうか (一部のモバイル コントロールに必要な「 http://server/path 」形式)、または終了の代わりに相対リダイレクトがクライアントに送信されるかどうかを示します。 True の場合、完全修飾されていないすべてのリダイレクトは、完全修飾形式に自動的に変換されます。 false はデフォルトのオプションです。
minFreeThreads: 新しいリクエストの実行が許可される空きスレッドの最小数を指定します。 ASP.NET は、処理を完了するために追加のスレッドが必要な要求のために、指定された数のスレッドを空き状態に保ちます。デフォルト値は 8 です。
minLocalRequestFreeThreads: ASP.NET によって維持され、新しいローカル要求を実行できる空きスレッドの最小数を示します。この数のスレッドは、一部のリクエストが処理中にローカル ホストに対してサブリクエストを行う場合に備えて、ローカル ホストからの受信リクエスト用に予約されています。これにより、Web サーバーへの再帰的な再入によって発生する可能性のあるデッドロックが回避されます。
appRequestQueueLimit: ASP.NET がアプリケーションのキューに入れる要求の最大数を示します。リクエストを処理するのに十分な空きスレッドがない場合、リクエストはキューに入れられます。キューがこの設定で指定された制限を超えると、受信リクエストは「503 - サーバーがビジー状態」エラー メッセージで拒否されます。
EnableVersionHeader: ASP.NET がバージョン ヘッダーを出力するかどうかを示します。 Microsoft Visual Studio 2005 は、このプロパティを使用して、現在使用されている ASP.NET のバージョンを特定します。運用環境では、このプロパティは必須ではないため、無効にすることができます。