2012-01-17 14 views
12

Ho configurato la nuova galleria NuGet su un server Web (in IIS 7.0) in cui lavoro. Il sito stesso è impostato e funziona bene. Siamo in grado di registrare account, confermare gli indirizzi email e persino caricare un nuovo pacchetto attraverso il sito stesso.Perché la Galleria NuGet restituisce 500 da nuget push?

I nostri script di compilazione automatici devono essere in grado di inviare nuovi pacchetti NuGet alla galleria. Quando uso il comando spinta di NuGet:

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

ottengo il seguente risultato:

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.. 

Il sito web è in grado di caricare un nuovo pacchetto bene, ma la linea di comando non è. Se provo il comando push con fiddler in esecuzione, esso osserva due richieste consecutive durante l'esecuzione del comando push. Uno sembra toccare il sito per assicurarsi che sia lì, mentre il secondo è il comando effettivo.

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

Il contenuto della richiesta PUT è corretto, contiene la chiave API e il payload. Guardando sul server web, non ci sono errori nel visualizzatore eventi e elmah non cattura nulla.

Fiddler indica questo come la risposta al 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> 

sto usando NuGet Version: 1.6.21205.9031 dalla riga di comando.

Quale potrebbe essere il problema?

EDIT: Dopo aver abilitato le pagine di errore dettagliati sulla cartella api nel sito, ottengo questo con la risposta 500 sopra descritto:

 
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 

C'è anche qualche aiuto testo incluso, suggerimenti basati sui permessi verifica e così, ma per quanto posso dire non c'è niente di sbagliato con i permessi.

risposta

22

Ho risolto questo problema modificando le autorizzazioni per l'utente IIS. Ho aggiunto le autorizzazioni di scrittura a IIS_IUSRS.

clic destro del sito in IIS > edit permissions > security

Da lì si aggiunge l'utente o il gruppo e dare loro scrivono i permessi.

+0

+1. Si noti che il nome del gruppo è 'IIS_IUSRS' (con un' i' extra). – Cameron

+0

non ci sono "autorizzazioni di modifica" quando si fa clic con il pulsante destro su un sito –

1

presumo che stai facendo riferimento alla nuova galleria: https://github.com/NuGet/NuGetGallery

Puoi provare a colpire /elmah.axd da un account amministratore e vedere se si ottiene più informazioni sull'errore?

+0

Sì, mi riferisco alla nuova galleria. Ho controllato se Elmah stava registrando qualcosa, e non ha trovato nulla. Ho anche controllato nella cartella dell'app i file xml di errore, e non c'è niente. –

+0

Vorrei provare a impostare un punto di interruzione nella richiesta di avvio, per vedere se il codice di gestione viene colpito affatto. In caso contrario, potrebbe trattarsi di un problema di configurazione di IIS. –

+0

Ho eseguito il progetto sulla mia macchina dev locale e ho provato a utilizzare NuGet.exe per inviare un pacchetto localmente, e ha funzionato bene. Penso che sia sicuramente un problema di configurazione di IIS. Qualche idea su cosa non è configurato correttamente? –

0

Dato che non è menzionato, ecco il mio scenario:
Sono riuscito a spingere (e recuperare) la maggior parte dei pacchetti senza problemi. Ma un pacchetto continuava a causare un errore 404 quando ho tentato di spingerlo. Diverse fonti online hanno indicato che dovrei aggiungere un tipo mime per .nupkg, ma tutto ciò è stato realizzato (indipendentemente dal tipo di mime) per trasformare l'errore in un errore del server interno di 500.

Si scopre che il pacchetto in questione era un po 'più grande del normale e IIS blocca il limite di richieste predefinito a 30 MB, causing the nuget server to return this obscure error.Cambiando l'impostazione system.webServer.security.requestFiltering.requestLimits.maxAllowedContentLength in qualcosa di più grande l'ho risolto (dopo aver rimosso il tipo di mimo che avevo aggiunto).

1

Nel mio caso era un vecchio server nuget locale. Il messaggio che ho trovato nei registri:

La versione dello schema di 'YourLib' non è compatibile con la versione 'someVersion.a.b' di NuGet. Aggiorna NuGet all'ultima versione da http://go.microsoft.com/fwlink/?LinkId=213942.

Nel mio caso, ho eseguito il downgrade di nuget (scaricato un vecchio nuget.exe) e ricreato il pacchetto. La spinta ora funziona. Non volevo disturbare il processo altrove e avevo bisogno di una soluzione rapida, ma ovviamente dipende dallo scenario che si ha. A lungo termine aggiornerò nuget.

+0

in quali registri è stato trovato il messaggio? –