尝试将软件包推送到Windows 2008 R2 Enterprise上IIS 7.5上托管的本地托管的Nuget Server(Nuget.Server软件包)时,我收到了(405)Method Not Found错误。
为nuget服务器(Called Nuget)配置了一个专用的IIS站点并绑定到特定端口(81为了好玩)。
应用程序池设置为.NET Framework 4.0并处于集成管道模式。
我知道我可能需要启用PUT和DELETE谓词,但不知道哪个处理程序负责处理Nuget请求。
答案 0 :(得分:4)
在集成管道模式下,正确的处理程序是svc-Integrated-4.0处理程序。
我通过反复试验和阅读source code of the Nuget Server on Codeplex找到了这一点。
This article on how ASP.NET processes your requests也非常有助于理解幕后发生的事情。
此外,要使此答案正确,您需要确保应用程序池处于集成管道模式,而不是经典模式。
下面列出了需要更改的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>
答案 1 :(得分:3)
将<remove name="WebDAVModule" />
添加到system.webServer/modules
对我来说很好。
答案 2 :(得分:2)
我刚遇到这个问题。虽然大多数错误与某些配置更改有关,但值得一提的是,如果您只指定主机名而不是网址,则会发生此错误。
错误:
nuget push MyPackage.1.0.nupkg -Source nuget.company.org -ApiKey ...
右:
nuget push MyPackage.1.0.nupkg -Source http://nuget.company.org -ApiKey ...
愚蠢的错误
答案 3 :(得分:1)
WebDAV也是推送包的问题,如disable WebDAV所述,您可以通过web.config禁用webdev。
还要确保应用程序池的IIS用户对nuget服务器文件夹结构中的Packages文件夹具有WRITE权限
最后,请确保您已指定api密钥,或添加appsettings密钥
<add key="requireApiKey" value="false" />
答案 4 :(得分:0)
对于其他任何从搜索引擎登陆的人来说,他们遇到405错误但没有运行他们自己的Nuget服务器:405错误的另一个原因只是一个过时的Nuget.exe。检查nuget.exe上的版本并进行更新。
答案 5 :(得分:-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"