Skip to main content

 

 

 

 
Language:

 

 
 
 
OutSystems

OutSystemsアプリのファイルアップロード制限を変更する

アプリで大容量ファイルをアップロードするには、アプリケーションサーバーで許可されているリクエストの最大長を増やす必要があります。

この最大長がアップロードされるファイルのサイズを下回っているとアップロードは失敗し、エラーログに以下のログが記録されます。

Message:

Error uploading to 'myserver': System.Web.HttpException: Maximum request length exceeded.

Stack:

   at System.Web.HttpRequest.GetEntireRawContent() 
   at System.Web.HttpRequest.get_InputStream() 
   at System.Web.Services.Protocols.SoapServerProtocol.Initialize() 
   --- End of inner exception stack trace --- 
   at System.Web.Services.Protocols.SoapServerProtocol.Initialize() 
   at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)

アプリケーションのアップロード制限を上げる

これらの制限を上げる場合、そのアプリケーションに関連付けられたweb.configファイルのmaxRequestLengthパラメータとmaxAllowedContentLengthパラメータを増やします。ただし、この変更はサーバー上のweb.configファイルで直接行ってはいけません。web.configファイルはeSpaceの再パブリッシュのたびに再生成されるため、カスタム構成は失われてしまいます。すべての構成が正しい状態を維持するために、Platform Serverによってこの動作が強制的に適用されます。

代わりに、アプリケーションレベルでのweb.configファイルの変更を永続的に維持する場合は、Factory Configurationコンポーネントを使用します。

共有構成を作成する

1.ブラウザでFactory Configurationを開き、LifeTimeの資格情報でログインします。 1.[Shared Configurations]タブで[Create New Shared Configuration]をクリックします。

![Create New Shared Configuration](images/altering-file-limits-new-config.png)

1.[Pre-made Samples]ドロップダウンで[Custom HttpRuntime Parameters (.NET)]を選択して、[Fill]をクリックします。 1.この構成の意味がわかる名前を選択して[Name]フィールドに入力します。 1.[Kind]で[web.config_XSL]を選択します。 1.オプションで[Description]を入力します。

![共有構成の詳細](images/altering-file-limits-new-config-detail.png)

1.[Value]フィールドでは、以下のテンプレートを使用します。

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
       <xsl:output method="xml" indent="yes" encoding="UTF-8" />
       <xsl:template match="@*|node()">
          <xsl:copy>
             <xsl:apply-templates select="@*|node()" />
          </xsl:copy>
       </xsl:template>
       <xsl:template match="/configuration/system.web/httpRuntime">
          <xsl:copy>
             <xsl:apply-templates select="@*|node()" />
             <xsl:attribute name="maxRequestLength">409600</xsl:attribute>
          </xsl:copy>
       </xsl:template>
       <!-- If the element "system.webServer/security" does not exist, add it.-->
       <xsl:template match="system.webServer[not(security)]">
          <system.webServer>
             <xsl:apply-templates select="@*|node()" />
             <security>
                <requestFiltering>
                   <requestLimits maxAllowedContentLength="419430400" />
                </requestFiltering>
             </security>
          </system.webServer>
       </xsl:template>
       <!--If the element "system.webServer/security/requestFiltering" does not exist, add it.-->
       <xsl:template match="system.webServer/security[not(requestFiltering)]">
          <security>
             <xsl:apply-templates select="@*|node()" />
             <requestFiltering>
                <requestLimits maxAllowedContentLength="419430400" />
             </requestFiltering>
          </security>
       </xsl:template>
       <!--If the element "system.webServer/security/requestFiltering/requestLimits" does not exist, add it.-->
       <xsl:template match="system.webServer/security/requestFiltering[not(requestLimits)]">
          <requestFiltering>
             <xsl:apply-templates select="@*|node()" />
             <requestLimits maxAllowedContentLength="419430400" />
          </requestFiltering>
       </xsl:template>
       <!-- If the attribute "system.webServer/security/requestFiltering/requestLimits/@maxAllowedContentLength" does not exist, add it.-->
        <xsl:template match="system.webServer/security/requestFiltering/requestLimits[not(@maxAllowedContentLength)]">
          <xsl:copy>
             <xsl:apply-templates select="@*|node()" />
             <xsl:attribute name="maxAllowedContentLength">419430400</xsl:attribute>
          </xsl:copy>
       </xsl:template>
    </xsl:stylesheet>

`maxRequestLength`の値はKB単位で定義します。上記の例では409600KB(400MB)に設定されています。この値は、必要に応じて変更できます。

`maxAllowedContentLength`の値は`maxRequestLength`の値と一致している必要がありますが、この値はバイト単位で定義します。この例では、419430400バイト(400MB)の値が使用されています。この値は、必要に応じて変更できます。

1.[Create]をクリックします。

共有構成をアプリに適用する

Factory Configurationで共有構成を作成したら、適用するeSpaceを選択できます。

1.引き続きFactory Configurationで、[eSpaces]タブに切り替えます。 1.共有構成を適用するeSpaceを見つけてチェックを付けます。 1.ドロップダウンで共有構成の名前を選択します。

![共有構成のeSpaceへの適用](images/altering-file-limits-apply-config.png)

1.[Associate Shared Configuration]をクリックします。「Configuration changes saved. Note that they may still need to be applied」という警告が表示されます。この警告への対応は次の手順で行います。各eSpaceの名前の前にある[Shared Configurations]列に、各eSpaceに割り当てられた共有構成が表示されます。

![共有構成のeSpaceへの適用](images/altering-file-limits-apply-config_1.png)

1.構成を関連付けたeSpaceをすべて再パブリッシュして構成を適用します。すべての参照が更新されたことを確認します。

  • Was this article helpful?