5

Windows 2008 R2 Enterprise 上の IIS 7.5 でホストされている、ローカルでホストされている Nuget サーバー (Nuget.Server パッケージ) にパッケージをプッシュしようとすると、(405) Method Not Found エラーが発生します。

nuget サーバー用に構成された専用の IIS サイト (Nuget と呼ばれる) があり、特定のポート (楽しみのために 81) にバインドされています。

アプリ プールは .NET Framework 4.0 になるようにセットアップされ、統合パイプライン モードになっています。

PUT 動詞と DELETE 動詞を有効にする必要があるかもしれないことは理解していますが、どのハンドラーが Nuget 要求の処理を担当しているのかわかりません。

4

6 に答える 6

4

統合パイプライン モードでは、正しいハンドラーは svc-Integrated-4.0 ハンドラーです。

私はこれを試行錯誤し、Codeplex の Nuget サーバーのソース コードを読んで見つけました。

ASP.NET が要求を処理する方法に関するこの記事は、内部で何が行われているかを理解するのにも非常に役立ちます。

さらに、この回答が正しいものであるためには、アプリケーション プールがクラシックモードではなく統合パイプラインモードであることを確認する必要があります。

変更が必要な Web.config の関連セクションを以下に示します。具体的には、現在サポートされている動詞のリストです。

<system.webServer>
    <handlers>
        <remove name="svc-Integrated-4.0" />
        <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
        <add name="svc-Integrated-4.0" path="*.svc" verb="GET,PUT,POST,DELETE,DEBUG" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>
于 2013-01-10T16:16:04.007 に答える
3

に追加<remove name="WebDAVModule" />するとsystem.webServer/modulesうまくいきました。

于 2015-09-03T11:43:04.793 に答える
2

この問題に遭遇しました。ほとんどのエラーは構成の変更に関連していますが、URL ではなくホスト名のみを指定した場合にもこのエラーが発生することに注意してください。

違う:
nuget push MyPackage.1.0.nupkg -Source nuget.company.org -ApiKey ...

右:
nuget push MyPackage.1.0.nupkg -Source http://nuget.company.org -ApiKey ...

愚かな間違い

于 2015-01-08T07:23:56.150 に答える
1

WebDAV もパッケージのプッシュに関する問題であり、ここで説明されているようにdisable WebDAVを使用すると、web.config を介して webdev を無効にできます。

また、アプリケーション プールの IIS ユーザーに、nuget サーバー フォルダー構造内の Packages フォルダーへの書き込みアクセス許可があることを確認します。

最後に、API キーを指定したことを確認するか、appsettings キーを追加します。

<add key="requireApiKey" value="false" />
于 2013-05-02T06:00:04.153 に答える