web-dev-qa-db-ja.com

クラシックASP on IIS 7?

最近、私は古いASPアプリケーションがW2K8サーバー上の7.5で動作するIIS。 〜200kBを超えるアップロードを受け入れるために、applicationHost.configで、次のように最大リクエストサイズを100 MBに設定するという設定を見つけました。

<location path="TheNameOfMySite">
    <system.webServer>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="104857600" />
            </requestFiltering>
        </security>
    </system.webServer>
</location>

残念ながら、これはまったく何もしないようです。約200 KBを超えるファイルの受け入れを拒否し、ログファイルには次のエラーメッセージが表示されます。

 ASP_0104 _:_ 80004005 | Operation_not_Allowed 

上記のようにmaxAllowedContentLengthを増やすことを指すグーグル。だから私はアイデアが新鮮ですが、巧妙なstackoverflowの群衆がこの質問を書くのにかかったよりも短い時間でこれを解決できると確信しています。

27
Johan Driessen

maxAllowedContentLengthは、応答で送信できるデータの量を制御します。ただし、リクエストで受け入れられる量を制御する必要があります。これは、構成ファイルのmaxRequestEntityAllowedセクションにあるlimits要素のasp属性によって処理されます。例は次のようになります。

<system.webServer>
  <asp>
     <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
     <limits scriptTimeout="00:02:00"
        queueConnectionTestTime="00:00:05"
        requestQueueMax="1000"
        maxRequestEntityAllowed="104857600"
        />
  </asp>

これは、IIS7マネージャーでASP機能のプロパティグリッドの[プロパティの制限]カテゴリで設定できます。代わりにコマンドラインを使用することもできます-

appcmd set config /section:asp /limits.maxRequestEntityAllowed:104857600

この値を拡張すると、攻撃者がサーバーに大量のコンテンツを送信するDOS攻撃のウィンドウが増加するため、本当に必要なものを超えてこれを拡張しようとしないでください。

33
AnthonyWJones

Windows 2008の場合-管理ツールに移動-サーバーマネージャー-役割を展開-Webサーバーを展開-IIS-をクリックして、ファイルサイズの制限を変更するWebインスタンスを探してから、オプション「ASP」に進み、「Limit properties」を展開し、変更する必要があるプロパティは「Maximum Request Entity Body Limit」です。ファイルサイズは常にバイト単位なので、任意のオンライン計算機を使用してバイトからKBまたはMBへの変換を計算します。

6
shoaib suleman

最初に @ AnthonyWJonesanswer は非常に役に立ちましたが、私の問題を解決できませんでした。実際、それはわずかに不正確であり、そのため私はこれを書いています。

IIS 6での大規模なアップロードは、気にする必要のある設定値が1つあるという問題でした

AspMaxRequestEntityAllowed

AspMaxRequestEntityAllowedプロパティは、ASPリクエストのエンティティボディで許可される最大バイト数を指定します。 Content-Lengthヘッダーが存在し、AspMaxRequestEntityAllowedの値より大きいデータ量を指定している場合、IISは403エラー応答を返します。このプロパティは、機能的にはMaxRequestEntityAllowedに関連していますが、ASPリクエストに固有です。一般的なWorld Wide Web発行サービス(WWWサービス)レベルでMaxRequestEntityAllowedプロパティを1 MBに設定できますが、AspMaxRequestEntityAllowedをより低い値に設定することもできます。特定のASPアプリケーションが処理するデータ量が少ないことを知っています。


IIS 7の導入により、*。configファイルを使用する新しい階層型のXMLベースの構成システムであるため、すべてが少し複雑になりました。

ラージファイルアップロードが期待どおりに機能する前に、正しく構成する必要がある2つの設定があり、これらは両方とも構成の異なる領域に存在します。

maxRequestEntityAllowed

 <configuration>
   <system.webServer>
     <asp>
       <limits maxRequestEntityAllowed="200000" />
     </asp>
   <system.webServer>
 <configuration>

maxRequestEntityAllowed属性は、ASPリクエストのエンティティボディで許可される最大バイト数を指定します。 Content-Lengthヘッダーが存在し、maxRequestEntityAllowedの値より大きいデータ量を指定している場合、IISはHTTP 403エラー応答を返します。

重要:上記の設定を構成すると、以下のデフォルトからわかるように機能しますが、maxRequestEntityAllowedの設定に関係なくデフォルトに到達すると、サーバーはHTTP 404 Not Foundで応答しますエラー応答。 404エラー応答を返すのは自分のコードであるに違いないと思ったため、最初は混乱しました。

maxAllowedContentLength

 <configuration>
   <system.webServer>
     <security>
       <requestFiltering>
         <requestLimits maxAllowedContentLength="30000000" />
       </requestFiltering>
     </security>
   </system.webServer>
 </configuration>

リクエスト内のコンテンツの最大長をバイト単位で指定します。デフォルト値は30000000で、約28.6MBです。

この設定は、IISリクエストの最大バイト数を定義するため、非常に重要です(以前の構成値のようなASPリクエストではありません)コンテンツの長さとは関係ありません応答(前述のとおり)maxRequestEntityAllowedasp-classic 特定の設定)の設定に関係なく、maxAllowedContentLengthが設定されていない場合、またはデフォルトの28 MB(約)以上をアップロードしようとすると、 HTTP 404エラー応答。

リンク集

4
Lankymart

cMDからappcmdコマンドを実行できない場合は、コマンドがそのフォルダーにあるため、パスをC:\ windows\system32\inetsrvに変更する必要があります。

2
cybersans

ここで受け入れられた解決策はうまくいきませんでした。まず、私の構成で指定された要素がなく、構成ファイルを台無しにしたくありませんでした。

私も @ shoaib-suleman'ssolution を試してみましたが、どちらも機能しませんでした。最後に、ここに示されているソリューションに出くわしましたが、うまくいきました。

  1. Open IIS 7 SnapIn

  2. 大きなファイルのアップロードを許可するために有効にするWebサイトを選択します。

  3. メインウィンドウで「リクエストフィルタリング」をダブルクリックします

  4. ウィンドウが開いたら、ファイル名拡張子、ルール、非表示セグメントなどのタブのリストが一番上に表示されます...

    選択したタブに関係なく、メインウィンドウで右クリックしてポップアップコンテキストメニューを表示します。メニューで[機能設定の編集]を選択します。

  5. ポップアップされるフォームで、「最大許容コンテンツ長(バイト)」を変更します

2
Jeff Reddy