5

尝试将包推送到 Windows 2008 R2 Enterprise 上的 IIS 7.5 上托管的本地托管 Nuget 服务器(Nuget.Server 包)时,我收到 (405) Method Not Found 错误。

为 nuget 服务器(称为 Nuget)配置了一个专用 IIS 站点,并绑定到特定端口(81 为乐趣)。

应用程序池设置为 .NET Framework 4.0 并处于集成管道模式。

我知道我可能需要启用 PUT 和 DELETE 动词,但不知道哪个处理程序负责处理 Nuget 请求。

4

6 回答 6

4

在集成管道模式下,正确的处理程序是 svc-Integrated-4.0 处理程序。

我通过反复试验和阅读Codeplex 上 Nuget Server 的源代码发现了这一点。

这篇关于 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 也是一个关于推送包的问题,​​如这里所述禁用 WebDAV,您可以通过 web.config 禁用 webdev。

还要确保您的应用程序池的 IIS 用户对 nuget 服务器文件夹结构中的 Packages 文件夹具有 WRITE 权限

最后,确保您已指定 api 密钥,或添加 appsettings 密钥

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

对于从搜索引擎登陆但没有运行自己的 Nuget 服务器的其他任何人:405 错误的另一个原因只是一个过时的 Nuget.exe。检查 nuget.exe 上的版本并进行更新。

于 2016-08-18T17:25:43.343 回答
-2

经过几次尝试

Handler Mappings > ExtensionlessUrl-Handler-ISAPI-4.0_64bit > Verbs > Check "All verbs"
Handler Mappings > ExtensionlessUrl-Handler-ISAPI-4.0_32bit > Verbs > Check "All verbs"
于 2014-02-01T22:51:11.287 回答