18

内部 NuGet サーバー (NuGet.Server パッケージを使用する ASP.net アプリ) があり、それを Octopus と共に使用してパッケージをデプロイしたいと考えています。したがって、最初にヒットするのは、パッケージが大きすぎるということです。

約 7 MB より大きいパッケージをプッシュすると、次のようになります: 要求の処理に失敗しました。'エンティティが大きすぎるリクエスト'。リモート サーバーがエラーを返しました: (413) 要求エンティティが大きすぎます..

Octopus のドキュメントに基づいて、web.config ファイルを更新して変更を加えました。

<configuration>
    <configSections>
        <sectionGroup name="elmah">
            <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah"/>
            <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah"/>
            <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah"/>
            <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah"/>
        </sectionGroup>
    </configSections>
    <system.web>
        <compilation debug="true" targetFramework="4.0"/>
        <httpModules>
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah"/>
            <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah"/>
        </httpModules>
        <httpRuntime maxRequestLength="419430400" executionTimeout="3600"/>
    </system.web>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules runAllManagedModulesForAllRequests="true">
            <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler"/>
            <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler"/>
            <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler"/>
        </modules>
        <staticContent>
            <mimeMap fileExtension=".nupkg" mimeType="application/zip"/>
        </staticContent>
        <security>
            <requestFiltering>
                <requestLimits maxAllowedContentLength="419430400"/>
            </requestFiltering>
        </security>
    </system.webServer>
    <elmah>
        <security allowRemoteAccess="false"/>
        <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data"/>
    </elmah>
    <location path="elmah.axd" inheritInChildApplications="false">
        <system.web>
            <httpHandlers>
                <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
            </httpHandlers>
        </system.web>
        <system.webServer>
            <handlers>
                <add name="ELMAH" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode"/>
            </handlers>
        </system.webServer>
    </location>
    <appSettings>
        <add key="apiKey" value="KeyHere"/>
        <add key="packagesPath" value=""/>
    </appSettings>
    <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    </system.serviceModel>
</configuration>

それはうまくいきません。他の投稿では、(IIS7) のようなものを実行することについて話しています: appcmd.exe set config -section:system.webServer/serverRuntime /uploadReadAheadSize:"419430400" /commit:apphost

または (IIS6): cscript adsutil.vbs set w3svc/1/uploadreadaheadsize 419430400

どちらも試してみましたがダメでした。どちらのコマンドもエラーを返さなかったので、値 '419430400' がすべての呼び出し (バイトと他のサイズの単位) で正しいと仮定します。

私が何が欠けているのか誰にも分かりますか?

最終的にパッケージを Web サーバー上の共有にコピーするだけになりましたが、プッシュ コマンドを機能させたいと思っています。

ありがとう。

4

8 に答える 8

35

OPの質問に正確に答えているわけではありませんが、トピックに関連して、ローカルのSymbolSourceサーバーにプッシュするために(413) Request Entity Too Large使用しているときにエラーが発生しました-ベースURLNuGet pushを指すようにコマンドを修正すると、わずかに間違ったURLに送信していたことが判明しました/NuGet/、それはうまくいきました。

間違った URL が原因で 413 エラーが発生する理由はわかりませんが、わかりました。これが誰かに役立つことを願っています。

編集: 以下のコメントに基づいてhttp://www.myserver.com/、/NuGet も含めるのではなく、ベース URL を参照するだけで運が良くなる可能性があります。ちょっと遊んでみる価値あり。

于 2013-07-23T14:36:06.470 に答える
7

これは古い質問であることは知っていますが、今日は同じエラーに直面しました。TeamCityパッケージの構築と公開を使用していることは注目に値します。とにかく、Publish巨大なパッケージ (約 200 MB) にしようとすると、これでブロックされました。解決策は簡単でした:

に発行する代わりにhttp://mynugetserver/api/v2/、次を使用します。 http://mynugetserver/

于 2014-02-12T11:47:10.677 に答える
2

構成を確認してくださいserverRuntime

maxRequestEntityAllowedおよびuploadReadAheadSize属性はそれぞれ、要求のエンティティ本体で許可される最大バイト数と、Webサーバーがバッファーに読み込んでISAPI拡張機能に渡すバイト数の制限を構成します。

詳細:http ://www.iis.net/configreference/system.webserver/serverruntime

私の推測では、あなたが使用していてSSL、設定uploadReadAheadSizeすることで問題が解決するでしょう。クライアントの再ネゴシエーションプロセス中に、SSLプリロードを使用してリクエストエンティティ本体をプリロードする必要があるためです。SSLプリロードはuploadReadAheadSize、ISAPI拡張に使用されるプロパティの値を使用します。

これがデフォルトです

<location path="Default Web Site"> 
   <system.webServer> 
      <serverRuntime enabled="true" 
         uploadReadAheadSize="49152" 
         maxRequestEntityAllowed="4294967295" /> 
   </system.webServer> 
</location>
于 2013-01-31T17:24:50.110 に答える
2

これらの人をより高い値に設定する必要があります。

  • system.web - httpRuntime - maxRequestLength から 1048576 まで
  • system.webserver - security - requestFiltering - requestLimits - maxAllowedContentLength に、たとえば 1073741824

両方の値は異なる単位であるため、2 番目の値は最初の値よりも大きくする必要があります。

また、www.myget.org も見てください。これは、Octopus Deploy を使用したときにすばらしいと思いました。

于 2012-11-20T07:14:03.667 に答える
0

これは、nginx の制限によるものです。Linux システムの nuget サーバーは、nginx をプロキシとして使用し、以下の構成ファイルを使用します。

/etc/nginx/conf.d/nuget.conf

server_name localhost;
root /var/www/public/;
client_max_body_size 200M;

client_max_body_size の変更 200M は私のために働いています。

于 2021-08-13T09:22:46.587 に答える
-1

私のために働いたのはこの記事でした:

http://blogs.blackmarble.co.uk/blogs/rfennell/post/2012/10/31/403-and-413-errors-when-publishing-to-a-local-Nuget-Server.aspx

「重要: この 2 番目のエラーは危険です。URL の末尾に /nuget は必要ありません」

于 2015-03-06T15:04:38.800 に答える