2012-01-17 27 views
12

Tôi thiết lập Thư viện NuGet mới trên máy chủ web (trong IIS 7.0), nơi tôi làm việc. Các trang web chính nó được thiết lập và chạy tốt. Chúng tôi có thể đăng ký tài khoản, xác nhận địa chỉ email và thậm chí tải lên một gói mới thông qua chính trang web đó.Tại sao Phòng trưng bày NuGet của tôi trả lại 500 từ đẩy nuget?

Tập lệnh xây dựng tự động của chúng tôi cần có khả năng đẩy gói NuGet mới được xây dựng vào thư viện. Khi tôi sử dụng lệnh push NuGet của:

nuget.exe push build\nuget\BaconAndEggs.1.0.0.1.nupkg 1451002a-8c63-4174-b7ed-73dd3e7bcdf0 -Source http://somenearbyserver/ 

tôi nhận được kết quả sau:

Pushing BaconAndEggs 1.0.0.1 to 'http://somenearbyserver/'... 
Failed to process request. 'Internal Server Error'. 
The remote server returned an error: (500) Internal Server Error.. 

Trang web này có thể tải lên một gói mới tốt, nhưng dòng lệnh thì không. Nếu tôi thử lệnh push với fiddler đang chạy, nó quan sát hai yêu cầu liên tiếp trong khi thực hiện lệnh push. Một dường như là chạm vào trang web để đảm bảo rằng nó có, trong khi thứ hai là lệnh push thực tế.

Request 1: GET http://somenearbyserver/ 200 OK 
Request 2: PUT http://somenearbyserver/api/v2/package/ 500 Internal Server Error 

Nội dung của yêu cầu PUT là chính xác, nó chứa khóa API và tải trọng. Nhìn vào máy chủ web, không có lỗi trong trình xem sự kiện và elmah không bắt được bất kỳ thứ gì.

Fiddler cho thấy điều này như là đối phó với các PUT:

HTTP/1.1 500 Internal Server Error 
Content-Type: text/html 
Server: Microsoft-IIS/7.0 
X-Powered-By: ASP.NET 
Date: Wed, 18 Jan 2012 20:21:08 GMT 
Connection: close 
Content-Length: 1208 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> 
<title>500 - Internal server error.</title> 
<style type="text/css"> 
<!-- 
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;} 
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;} 
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF; 
background-color:#555555;} 
#content{margin:0 0 0 2%;position:relative;} 
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;} 
--> 
</style> 
</head> 
<body> 
<div id="header"><h1>Server Error</h1></div> 
<div id="content"> 
<div class="content-container"><fieldset> 
    <h2>500 - Internal server error.</h2> 
    <h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3> 
</fieldset></div> 
</div> 
</body> 
</html> 

Tôi đang sử dụng NuGet Version: 1.6.21205.9031 từ dòng lệnh.

Sự cố có thể là gì?

EDIT: Sau khi kích hoạt các trang lỗi chi tiết về thư mục api trong trang web, tôi nhận được điều này với các phản ứng 500 mô tả ở trên:

 
Server Error in Application "NUGET" 

Internet Information Services 7.0 

Error Summary 
HTTP Error 500.0 - Internal Server Error 

The page cannot be displayed because an internal server error has occurred. 

Detailed Error Information 
Module = LiveStreamingHandler 
Notification = MapRequestHandler 
Handler = WebDAV 

Error Code = 0x80070585 
Requested URL = http://somenearbyserver:80/api/v2/package/ 
Physical Path = M:\path\to\nuget-gallery\api\v2\package\ 
Logon Method = Anonymous 
Logon User = Anonymous 

Ngoài ra còn có một số văn bản trợ giúp bao gồm, gợi ý dựa trên quyền xác minh và như vậy, nhưng theo như tôi có thể nói không có gì sai với các điều khoản.

Trả lời

22

Tôi đã khắc phục sự cố này bằng cách thay đổi quyền cho người dùng IIS. Tôi đã thêm quyền ghi vào IIS_IUSRS.

Nhấp chuột phải trang web trong IIS > edit permissions > security

Từ đó bạn thêm người dùng hoặc nhóm và cung cấp cho họ viết cho phép.

+0

+1. Lưu ý rằng tên nhóm là 'IIS_IUSRS' (có thêm' i'). – Cameron

+0

không có "quyền chỉnh sửa" khi nhấp chuột phải vào trang web –

1

Tôi giả sử bạn đang đề cập đến các bộ sưu tập mới: https://github.com/NuGet/NuGetGallery

có thể bạn hãy thử nhấn /elmah.axd từ tài khoản quản trị và xem nếu bạn nhận được thêm thông tin về lỗi?

+0

Vâng, tôi đang đề cập đến thư viện mới. Tôi đã kiểm tra xem Elmah có ghi âm bất cứ thứ gì không, và nó không có gì cả. Tôi thậm chí đã kiểm tra trong thư mục của ứng dụng cho các tệp xml lỗi và không có gì. –

+0

Tôi sẽ thử đặt một điểm ngắt trong yêu cầu bắt đầu, để xem liệu mã quản lý có bị tấn công hay không. Nếu không thì nó có thể là một vấn đề cấu hình IIS. –

+0

Tôi đã chạy dự án trên máy dev cục bộ của mình và thử sử dụng NuGet.exe để đẩy một gói cục bộ và nó hoạt động tốt. Tôi nghĩ rằng nó chắc chắn là một vấn đề cấu hình IIS. Bất kỳ suy nghĩ nào về những gì được định cấu hình sai? –

0

Vì nó không được đề cập, đây là kịch bản của tôi:
Tôi có thể đẩy (và truy xuất) hầu hết các gói mà không gặp bất kỳ sự cố nào. Tuy nhiên, một gói đã gây ra lỗi 404 khi tôi cố gắng đẩy nó. Một số nguồn trực tuyến chỉ ra rằng tôi nên thêm một loại mime cho .nupkg, tuy nhiên tất cả điều này hoàn thành (bất kể loại mime) là để biến các lỗi thành một lỗi máy chủ nội bộ 500.

Hóa ra gói được đề cập lớn hơn bình thường một chút và IIS giới hạn yêu cầu mặc định là 30MB, causing the nuget server to return this obscure error.Thay đổi các thiết lập system.webServer.security.requestFiltering.requestLimits.maxAllowedContentLength để một cái gì đó lớn hơn giải quyết nó cho tôi (sau khi tôi loại bỏ các loại mime tôi đã thêm).

1

Trong trường hợp của tôi, đó là máy chủ cục bộ cũ của địa phương. Thông báo tôi tìm thấy trong nhật ký:

Phiên bản lược đồ 'YourLib' không tương thích với phiên bản 'someVersion.a.b' của NuGet. Vui lòng nâng cấp NuGet lên phiên bản mới nhất từ http://go.microsoft.com/fwlink/?LinkId=213942.

Trong trường hợp của tôi, tôi đã hạ cấp nuget (tải xuống nuget.exe cũ hơn) và tạo lại gói. Đẩy bây giờ hoạt động. Tôi không muốn làm phiền quá trình ở nơi khác và tôi cần một giải pháp nhanh chóng nhưng tất nhiên điều đó phụ thuộc vào kịch bản có. Về lâu dài, tôi sẽ cập nhật nuget.

+0

bạn đã tìm thấy thư trong nhật ký nào? –

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