2013-01-10 29 views
5

Tôi nhận được lỗi (405) Không tìm thấy lỗi khi cố gắng đẩy gói đến máy chủ lưu trữ cục bộ Nuget (gói Nuget.Server) được lưu trữ trên IIS 7.5 trên Windows 2008 R2 Enterprise.Máy chủ Nuget phản hồi với (405) Phương pháp không được phép trong khi đẩy hoặc xóa gói

Có một trang IIS chuyên dụng được định cấu hình cho máy chủ nuget (Được gọi là Nuget) và được liên kết với một cổng cụ thể (81 để giải trí).

Nhóm ứng dụng được thiết lập thành .NET Framework 4.0 và đang ở chế độ Đường ống tích hợp.

Tôi hiểu rằng tôi có thể cần bật các động từ PUT và DELETE nhưng không biết trình xử lý nào chịu trách nhiệm xử lý các yêu cầu Nuget.

Trả lời

4

Trong chế độ đường ống tích hợp, trình xử lý chính xác là trình xử lý svc-Tích hợp-4.0.

Tôi đã tìm ra điều này bằng thử và sai và bằng cách đọc qua số source code of the Nuget Server on Codeplex.

This article on how ASP.NET processes your requests cũng rất hữu ích trong việc tìm hiểu những gì đang diễn ra dưới các trang bìa.

Bên cạnh đó, đối với câu trả lời này là đúng, bạn cần phải đảm bảo rằng các hồ bơi ứng dụng trong Integrated Pipeline chế độ và không cổ điển chế độ.

Phần có liên quan của Web.config của bạn cần thay đổi được liệt kê bên dưới, cụ thể là danh sách các động từ hiện được hỗ trợ.

<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

Tôi đã thử tất cả điều này và tôi vẫn nhận được thông báo lỗi: 'Phương thức không được phép' khi tôi thử xuất bản. – Zapnologica

+0

@Zapnologica bạn đã thử chưa? – Kiquenet

1

WebDAV cũng là vấn đề liên quan đến việc đẩy gói và như được mô tả ở đây disable WebDAV, bạn có thể tắt webdev qua web.config.

Cũng đảm bảo rằng người dùng IIS cho hồ bơi ứng dụng của bạn có VIẾT permmissions vào thư mục Packages trong máy chủ NuGet cấu trúc thư mục

Cuối cùng, hãy chắc chắn bạn đã xác định chìa khóa api, hoặc thêm appSettings trọng

<add key="requireApiKey" value="false" /> 
-2

Afer một vài cố gắng

Handler Mappings > ExtensionlessUrl-Handler-ISAPI-4.0_64bit > Verbs > Check "All verbs" 
Handler Mappings > ExtensionlessUrl-Handler-ISAPI-4.0_32bit > Verbs > Check "All verbs" 
2

tôi chỉ chạy vào vấn đề này. Trong khi hầu hết các lỗi có liên quan đến một số thay đổi cấu hình, điều đáng nói đến là lỗi này xảy ra nếu bạn chỉ cần chỉ định tên máy chủ và cũng không phải là url.

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

phải:
nuget push MyPackage.1.0.nupkg -Source http://nuget.company.org -ApiKey ...

Silly sai lầm

3

Thêm <remove name="WebDAVModule" />-system.webServer/modules làm việc tốt cho tôi.

+0

Điều này cũng làm việc cho tôi. Trên Windows Home Server 2011, máy chủ gói nuget hoạt động như cũ. Khi chính xác cùng một mã được đặt trên Windows Server 2012 được chia sẻ lưu trữ, nó không thành công với 405 mỗi lần. Truy tìm bằng Fiddler cho thấy WebDAVModule đã từ chối yêu cầu PUT. Thêm dòng này giải quyết vấn đề, trong khi những thay đổi trong câu trả lời được chấp nhận thì không. –

0

Đối với bất kỳ ai khác đến đây từ một công cụ tìm kiếm bị lỗi 405 nhưng không chạy máy chủ Nuget của riêng mình: một nguyên nhân khác gây ra 405 lỗi đơn giản là lỗi thời Nuget.exe. Kiểm tra phiên bản trên nuget.exe của bạn và cập nhật nó.

Các vấn đề liên quan