2012-01-17 23 views
12

Configuré la nueva Galería NuGet en un servidor web (bajo IIS 7.0) donde trabajo. El sitio en sí está configurado y funciona bien. Podemos registrar cuentas, confirmar direcciones de correo electrónico e incluso subir un nuevo paquete a través del sitio mismo.¿Por qué mi Galería NuGet devuelve 500 de nuget push?

Nuestros scripts de compilación automatizados deben poder enviar a la galería los paquetes NuGet recién construidos. Cuando uso del comando push NuGet:

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

me sale el siguiente resultado:

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

El sitio web es capaz de cargar un nuevo paquete muy bien, pero la línea de comandos no lo es. Si pruebo el comando push con fiddler en ejecución, observa dos solicitudes consecutivas mientras ejecuta el comando push. Uno parece estar tocando el sitio para asegurarse de que está allí, mientras que el segundo es el comando de empuje real.

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

El contenido de la solicitud PUT es correcto, contiene la clave API y la carga útil. Al buscar en el servidor web, no hay errores en el visor de eventos y elmah no detecta nada.

Fiddler muestra esto como la respuesta a la 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> 

estoy usando NuGet Version: 1.6.21205.9031 desde la línea de comandos.

¿Cuál podría ser el problema?

EDITAR: Después de habilitar páginas de error detallados en la carpeta de API en el sitio, me sale esto con la respuesta 500 descrito anteriormente:

 
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 

Hay también otros textos de ayuda incluido, sugerencias basadas en permisos que verifican y tal, pero hasta donde puedo decir, no hay nada de malo con los permisos.

Respuesta

22

He solucionado este problema al cambiar los permisos para el usuario de IIS. Agregué permisos de escritura a IIS_IUSRS.

Haga clic derecho en el sitio IIS > edit permissions > security

A partir de ahí se agrega el usuario o grupo y darles permisos de escritura.

+0

+1. Tenga en cuenta que el nombre del grupo es 'IIS_IUSRS' (con un' i' extra). – Cameron

+0

no hay "permisos de edición" al hacer clic con el botón derecho en un sitio –

1

Asumo que te refieres a la nueva galería: https://github.com/NuGet/NuGetGallery

¿Se puede intentar golpear /elmah.axd de una cuenta de administrador y ver si le da más información sobre el error?

+0

Sí, me refiero a la nueva galería. Revisé para ver si Elmah estaba grabando algo, y no apareció nada. Incluso revisé en la carpeta de la aplicación los archivos xml de error, y no hay nada. –

+0

Intentaría establecer un punto de interrupción en la solicitud de inicio, para ver si el código administrado se está ejecutando. De lo contrario, podría tratarse de un problema de configuración de IIS. –

+0

Ejecuté el proyecto en mi máquina de desarrollo local e intenté usar NuGet.exe para enviar un paquete localmente, y funcionó bien. Creo que definitivamente es un problema de configuración de IIS. ¿Alguna idea sobre lo que está mal configurado? –

0

Como no se menciona, aquí estaba mi caso:
Pude (y recuperar) la mayoría de los paquetes sin ningún problema. Pero, un paquete siguió causando un error 404 cuando intenté empujarlo. Varias fuentes en línea indicaron que debería agregar un tipo mime para .nupkg, sin embargo, todo esto logrado (independientemente del tipo de mime) fue convertir el error en un error interno de 500 servidores.

Resulta que el paquete en cuestión era un poco más grande de lo normal e IIS limita el límite de solicitud predeterminado a 30 MB, causing the nuget server to return this obscure error.Cambiando la configuración system.webServer.security.requestFiltering.requestLimits.maxAllowedContentLength a algo más grande, la resolvió para mí (después de eliminar el tipo de mime que había agregado).

1

En mi caso, era un antiguo servidor nuget local. El mensaje que he encontrado en los registros:

la versión del esquema de 'YourLib' es incompatible con la versión 'someVersion.a.b' de NuGet. Actualice NuGet a la última versión de http://go.microsoft.com/fwlink/?LinkId=213942.

En mi caso, modifiqué nuget (descargué un nuget.exe anterior) y volví a crear el paquete. El empuje ahora funciona. No quería perturbar el proceso en otro lugar y necesitaba una solución rápida, pero eso depende del escenario que se tenga. A la larga, actualizaré nuget.

+0

¿en qué registros encontró el mensaje? –