Tengo una Web de la Api de la aplicación. Funciona perfectamente bien cuando he probado usando el VS 2010 depuración dev server. Pero ahora me implementado en IIS 7.5 y estoy recibiendo un error HTTP 404 al intentar acceder a la aplicación.

Aquí está mi web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FlowGearProxy-20123141219;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="true" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>
  • Tengo el mismo problema. Todavía no he encontrado una solución, sin embargo, una cosa que he descubierto es que si selecciona el sitio en IIS, a continuación, vaya a la característica Asignaciones de Controlador, hay una asignación para los archivos estáticos que los mapas * para un archivo que debe existir. Cuando me quite esta asignación y agregar una nueva asignación para todos los verbos HTTP, ya no tengo el error 404, es reemplazado por una página en blanco.
  • >>mediante el VS 2010 depuración dev server. – También conocido como el mal de Cassini. Consulte blogs.msdn.com/b/rickandy/archive/2011/04/22/… — Si eso no funciona, crear un nuevo MVC 4 WebApi de la aplicación y la implementación de prueba – simple
InformationsquelleAutor Armand | 2012-03-14

27 Comentarios

  1. 87

    Yo estaba luchando con esto. Afortunadamente, Steve Michelotti documentado una solución que funcionó para mí aquí.

    Al final del día, me habilitado todos los verbos (verbo=»*») para la ExtensionlessUrlHandler-Integrado-4.0 controlador en mi web config.

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true" />
            <handlers>
                <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
                <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
            </handlers>
    </system.webServer>

    Otros han señalado que el tener WebDAV habilitado causas de los problemas. Afortunadamente, yo no ejecutar en esa cuestión.

    • +1 para que uno. Pero me lo cambiaron en las Asignaciones de Controlador en la Aplicación con el Administrador de IIS. Se convirtió en un montón de verbos. He cambiado que a todos los verbos en (*) y listo. Pero siempre es mejor poner en la fuente.
    • Tengo el mismo problema, pero estos cambios no me ayudan. Es allí cualquier otra configuración, también? O puede ser una referencia a la biblioteca? Por favor, consulte también: stackoverflow.com/questions/27303523/…
    • muchas personas dicen que el uso de runAllManagedModulesForAllRequests tendrán un impacto en el rendimiento (revise las respuestas de hemant gautam a continuación). Sin embargo, no puede obtener el mismo servicio de obras, así que siga la configuración aquí: blog.maartenballiauw.ser/post/2012/12/07/… en Ese enlace también señala que la habilitación de WebDAV puede afectar el resultado así
    • Impresionante respuesta!
    • Para mí, el verbo ya estaba *. He tenido que cambiar la ruta de acceso a * así a hacer el trabajo como *. todavía la causa del problema
  2. 53

    Tenido el mismo problema. Esta opción de configuración resuelto el problema.

    <system.webServer>
        .....
        <modules runAllManagedModulesForAllRequests="true" />
        .....
    </system.webServer>

    Como se explica en http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html por encima de la solución debe ser evitado. El uso de este lugar.
    La misma solución es proporcionada por Desequilibrado también. Mantenerlo aquí para permitir a los usuarios a evitar la ejecución de la primera solución de trabajo.

    <modules>
      <remove name="UrlRoutingModule-4.0" />
      <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
      <!-- any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. -->
    </modules>
  3. 34

    Si IIS está instalado o activado después de ASP.NET, usted tendrá que registrar manualmente ASP.NET con IIS para que su .NETO de la aplicación para que funcione.

    Para Windows 7 y versiones anteriores:

    1. Ejecutar el Símbolo del sistema (cmd.exe) como administrador.
    2. Navegar a la adecuada .NET Framework ubicación. (por ejemplo, C:\Windows\Microsoft.NET\Framework64\v4.0.30319)
    3. Ejecutar aspnet_regiis.exe -yo

    Para Windows 8 y versiones posteriores:

    1. Desde el menú inicio, escriba «Activar las características de windows o desactivar» y selecciona el primer resultado.
    2. Expanda Servicios de Información de Internet: World Wide Web Servicios: Características de Desarrollo de Aplicaciones y seleccione ASP.NET 4.5 (o ASP.NET 3.5 en caso de que usted necesita para apoyar proyectos .NET Framework 2.0-3.5).
    3. Haga clic en ACEPTAR.
    • He migrado de IIS Express para el desarrollo más completo de IIS y esto es lo que fija para mí. Gracias!
    • Similares a @JimBrown arriba; a mí me funcionó después de la migración de IIS express.
    • Esto resuelto para mí. En Windows 7, Visual Studio 2015 Ent, nuevo MVC 5 sitio web, cambió de IIS Express a todo IIS.
  4. 25

    Se ejecuta la Web de la API de la aplicación en un directorio virtual o una aplicación?

    Por ejemplo: yo tenía el mismo problema que cuando me mudé de mi proyecto para mi local de IIS en el Sitio Web Predeterminado > SampleWebAPI. Creo que esto es debido a que el cambio en la URL de enrutamiento de la siguiente manera:

    Original: localhost:3092/api/values

    Movido: localhost/SampleWebAPI/api/values

    Si mueve el API Web del proyecto para su propio sitio web que se ejecuta en un puerto diferente parece que funciona.

    Nota adicional: se me había complicado aún más el problema mediante la adición de api como el alias de una aplicación dentro de mi sitio web, que causó la efectiva URL ser:

    localhost:81/api/api/values – di cuenta de esto después de mover el sitio a su propio sitio web

    Por lo tanto, porque quería mantener una separación entre mi sitio web y la web de la api de proyecto de mvc sitio, he cambiado las reglas de enrutamiento en global.asax para la Web de la API «DefaultAPI» de api/{controller}/{id} a {controller}/{id} y la ASP.NET MVC uno Default de {controller}/{id} a info/{controller}/{id}.

    • jejeje… me había llamado mi app en IIS como api demasiado. Esta causa de todo esto prueba y error de depuración por más de 2 horas. Muchas gracias por compartir su experiencia! Le cambió el nombre y ahora estoy de vuelta a los negocios de nuevo. 😀
    • Gracias – este era mi problema! 🙂
    • No estoy seguro de por qué las llamadas a la api no estaban cuando yo tenía alojado mi proyecto en un puerto 8080, sólo tienes que mover como un directorio virtual en el sitio web predeterminado hizo el truco 🙂
  5. 14

    Esta es la única respuesta que trabajó para mí…

    Tuve un problema similar… parecía Que no importa lo que hice, nada era conseguir redirigido y mi archivo global sólo estaba siendo ignorado. Consideré seriamente acaba de acabar con todo antes de encontrar esta respuesta. Espero que este enlace de ayuda a alguien más.


    Agregando lo siguiente a la web.archivo de configuración que funcionó para mí:

    <system.webServer>
      <modules>
        <remove name="UrlRoutingModule-4.0" />
        <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
      </modules>
    </system.webServer>

    sistema.webServer etiqueta ya estaba allí, por supuesto, pero he añadido la módulos etiqueta y, a continuación, el quitar & agregar etiquetas de los módulos de la etiqueta.

    • Pegado a este problema en el 2008 (no R2) del servidor, y esta fue la única solución que funcionó para mí. Además, he tenido que combinar esto con la configuración de la aplicación de la piscina para el «integrado» de modo.
  6. 11

    Un par de cosas para ver:

    1. Asegúrese de que usted tiene .NET Framework 4 instalado.
    2. Asegúrese de que la versión 4 de .NET Framework es seleccionado para su sitio web & directorio virtual (si es aplicable).
    3. Asegurarse de que usted tiene MVC instalado o tiene la correspondiente Dll en el directorio bin.
    4. Puede ser que necesite para permitir ASP.NET 4.0 de extensiones de servicio web
    5. Poner la aplicación en que es la propia app la piscina.
    6. Asegúrese de que el directorio tiene al menos «Sólo secuencias de comandos» permisos de ejecución.
    • Tengo otros 4 normal de las aplicaciones web que se ejecutan en el mismo servidor IIS y todos ellos están utilizando .net framework 4. así que de esos 4 puntos no son necesarios? cuando publiqué mi aplicación mvc he añadido el complemento dependencias que se pueden implementar y añadió ASP.NET MVC por lo que es en mi directorio bin
    • Parece que has hecho #1. #2 es todavía necesario. La adición de dependencias que se pueden implementar, si usted lo hizo, como se describe a continuación: haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx, debe tener cuidado de #3 arriba. #4 puede o puede no ser necesaria, aunque no tengo el conocimiento para saber cuando es & no es necesario.
    • Hice todos los 4 puntos y se reinicia el servidor en vano
    • Añadido un par de cosas para ver.
    • Aún así obtener el error 404 después de hacer todos los 6 pasos
  7. 9

    He tenido un problema similar. Yo tenía el derecho de configuración en mi web.archivo de configuración, pero se estaba ejecutando la aplicación piscina en modo Clásico en lugar de el modo Integrado de

    HTTP error 404 de Página No Encontrada en la Api de Web alojado en IIS 7.5

  8. 6

    Este problema también puede ocurrir debido a las siguientes

    1.En la Web.Config

    <system.webServer>
         <modules runAllManagedModulesForAllRequests="true" /> 
    <system.webServer>

    2.Asegúrese de que los siguientes están disponibles en la carpeta bin del servidor en la Web de la API se implementa

    • Sistema.Net.Http

    • Sistema.Net.Http.Formato

    • Sistema.Web.Http.WebHost

    • Sistema.Web.Http

    Estas asambleas no se copiarán en la carpeta bin de forma predeterminada, si la publicación es a través de Visual Studio, porque la Web de la API de instalación de los paquetes a través de Nuget en el desarrollo de la máquina. Aún si usted desea conseguir estos archivos estén disponibles como parte de Visual Studio publicar, a continuación, necesita establecer CopyLocal a la Verdad de estos conjuntos

    Sadish Kumar.V

    • Los archivos DLL son necesarios si usted no tiene MVC instalado en el Servidor. En mi caso yo estaba viendo una página en blanco cuando tratando de invocar a la API. Agregar la DLL manualmente trabajó para mí. Gracias!!
    • Mi problema fue resuelto después de la adición del Sistema.Net.Http el principal carpeta de publicar, la mía era Asp.net Núcleo de la solución
  9. 5

    Basado en este PARA responder, yo sólo tenía que cambiar path="*." a path="*" para el agregado ExtensionlessUrlHandler-Integrated-4.0 en configuration>system.WebServer>handlers en mi web.config

    Antes:

    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

    Después:

    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    • Muchas gracias Greg, yo estaba a punto de matar a mí, porque de este estúpido path=»*.» pero ahora, después de dejar a este miserable punto, todo funciona perfectamente bien! Muchas gracias!
  10. 5

    También me encontré con este problema. He resuelto el problema por el que va a la Aplicación de Piscinas > Nombre del grupo de Aplicaciones y cambió la .NET Framework a partir de la versión v. 2.0.50727 a v4.0.30319.

    • Esto lo descubrí por mi cuenta, también. Upvoting su respuesta ya que es fácil perderse. Cuando he creado un sitio para mi aplicación, IIS crea automáticamente una aplicación de la piscina para mí, establece .NET v2.0 !! Por qué, por qué, por qué?? 🙂
  11. 3

    Tuve que deshabilitar el Archivo Opción de Publicar «Precompilar durante la publicación.»

    • Y cuando se hace eso?
    • Es en un cuadro de diálogo que aparece cuando haces clic derecho en el proyecto y seleccione Publicar. Parece que este
  12. 3

    No es oficial fix de microsoft:
    http://support.microsoft.com/kb/980368

    Creo firmemente que NO recomendamos el uso de < módulos de runAllManagedModulesForAllRequests=»true»>.
    Esto conduce a que todas las solicitudes (incluso .jpg, .css, .pdf, etc) será procesado por todos los módulos HTTP.
    Hay dos momentos negativos: a) una carga adicional en los recursos de hardware; b) los posibles errores, como los módulos http proceso nuevo tipo de contenido.

    • Gracias así mucho! He intentado absolutamente todo lo demás, y esta era la única cosa que se corrigió.
    • Lo mismo digo, muchas gracias por añadir esta respuesta! Fue la solución para mi problema!
  13. 2

    Empecé a recibir 404 respuestas de la API de Web después de seguir un Windows Azure tutorial que me dijo para agregar un archivo «WebRole.cs» para mi proyecto.

    Después de la eliminación de «la WebRole.cs» de mi proyecto, en mi Web, llamadas a la API comenzó a trabajar de nuevo.

    • Esto funcionó para mí. He migrado una Azure aplicación a una VM de la implementación y después de comentar el contenido de WebRole.cs, mi WebAPI llamadas comenzaron a trabajar de nuevo.
    • Debo de haber pasado un día en esto! Comentando WebRole.cs trabajado – pregunto por qué sin embargo
  14. 2

    Por favor asegúrese de que la aplicación de la piscina está en el modo Integrado de

    Y agregue la siguiente web.archivo de configuración:

    <system.webServer>
        .....
        <modules runAllManagedModulesForAllRequests="true" />
        .....
    </system.webServer>
  15. 2

    En mi caso, el problema era simplemente que yo estaba tratando de acceder al sitio en

    myserver.myintranet.com/mysite

    Pero el sitio web de enlace para http en IIS no tiene el nombre de host especificado en el enlace. Había trabajado antes y que no tengo ni idea de lo que consiguió soplado lejos.

    Una vez que me ponga myserver.myintranet.com en el nombre de host el 404 se había ido.

    En el Administrador de IIS de ir a Enlaces… en el panel acciones, a continuación, editar el enlace http para especificar el nombre de host.

    • Incluso también soy de las que se enfrenta el mismo problema. y como usted sugiere he comprobado nombre de host en el enlace http, y se actualizan correctamente sólo. Pero mi problema persiste. Nota: me acogió mi API de la aplicación como un niño de la aplicación. Por favor, sugiera si alguno tiene idea sobre esto. ex: «sample.example.com» es mi principal de la aplicación y crea una API de bajo este dominio como «sample.example.com/myAPI/»
  16. 1

    Tenido el mismo problema, una respuesta 404 para el api web de los controladores cuando se sirve desde el IIS, pero todo funcionaba bien desde VS2010. Ninguna de las soluciones anteriores funciona para mí. Con el tiempo encontré que el problema era que hemos añadido WSE 3.0 de apoyo para la aplicación y el de Microsoft.Web.Services3 dll que faltan en la aplicación del directorio /bin. Extraño, pero después de copiar la dll, la asignación de ruta de empezar a trabajar.

  17. 1

    Para mí, el problema estaba en la raíz del sitio se ha configurado para utilizar una .NET 2.0 de la aplicación de la piscina, y mi aplicación dentro de ese sitio era .NET 4.5.

    He creado un nuevo sitio con un .NET 4 aplicación de la piscina y se puso a mi solicitud, a raíz de eso – y que funcionaba bien.

  18. 1

    He luchado con esto, así. Exactamente mi problema era que tenía un Servicio Web ASMX que, cuando entré en un parámetro de un método web y probado, luego me daba el error 404. El método particular, que había funcionado bien en el pasado y no ha cambiado, sólo la re-publica. Entonces yo llegué aquí y probado todas las respuestas publicadas & nada ayudó.

    Mi solución definitiva? Sé que esto es drástica, pero acabo de crear una nueva solución de Visual Studio y de la web del proyecto. Seleccionado MVC, luego hice un «Agregar» > «Elemento Nuevo», selecciona «Visual C#» > «Web» y «Servicio Web (ASMX)» en virtud de que. He copiado todos los de mi antiguo código subyacente, entonces tomé nota de los nombres que dio el nuevo archivo en mi nuevo proyecto, se pega a continuación, todos los de mi antiguo código en el nuevo archivo de código subyacente en el nuevo proyecto y poner el espacio de nombres de volver a lo que había sido.

    A continuación, he creado mis carpetas en mi proyecto que tenía antes de utilizar Visual Studio para hacer «Agregar» > «Nueva Carpeta», luego una copia de seguridad de mis archivos en las carpetas de mi otro proyecto, utilizando el Explorador de Windows, a continuación, haga clic en cada carpeta de Visual Studio y lo hizo «Agregar» > «Elemento Existente…» y tiró de los elementos en las carpetas en mi nuevo proyecto de Visual Studio carpetas. Me refería a todos mi .NET asambleas de nuevo, teniendo ambos proyectos abiertos para que yo pudiera comparar que tuve hace referencia anteriormente (hubo varias). Yo tenía a nombre de mi nuevo proyecto un poco diferente – básicamente me hizo algo comparable a «GeneralWebApp» en lugar de «MyWebApp», por ejemplo – así que tuve que hacer un «Reemplazar Todo» en toda mi solución para sustituir ese nombre, por lo que obtener el derecho de espacio de nombres para todos mis archivos.

    Entonces hice un «volver a generar Todo» en el proyecto, luego comenzó con el botón «Play» de Visual Studio da cuando llegué a construir correctamente. Funcionó bien. Así que lo publicó, y que todo estaba bien en el servidor donde lo publiqué, cuando me encontré a partir de allí. No tengo explicación para lo que sucedió, pero así es como lo hice yo. No es una mala prueba para ver si algo de Visual Studio ha arruinado arriba.

  19. 0

    Qué tipo de petición HTTP estás haciendo?

    Esto es un poco a la izquierda-campo de responder, pero ¿has probado la eliminación del defecto de IIS página de error 404 para comprobar lo que su API es en realidad regresar?

    Tuve un problema por el cual yo quería un método de controlador para devolver un mensaje de error 404 cuando he Publicado el identificador incorrecto a ella. Me di cuenta de que estaba consiguiendo siempre el IIS 404 «el Archivo o directorio no encontrado» de la página en lugar de la respuesta HTTP de mi API. La eliminación de la predeterminada de la página de error 404 resuelto el problema.

    Problema diferente, pero nunca se sabe que puede ayudar 😉

    • O, por supuesto, <customErrors mode=»Off» />
  20. 0

    Esta pieza de la configuración en el web.archivo de configuración puede ayudar me ayudó a mí:
    en el sistema.web sección:

          <security>
              <requestFiltering>
                  <verbs applyToWebDAV="true">
                      <remove verb="PUT" />
                      <add verb="PUT" allowed="true" />
                      <remove verb="DELETE" />
                      <add verb="DELETE" allowed="true" />
                      <remove verb="PATCH" />
                      <add verb="PATCH" allowed="true" />
                  </verbs>
              </requestFiltering>
          </security>      
  21. 0

    Recientemente tuve un error 404 not found, con todo mi Web Api 2 rutas/controladores. Así que me fui en el servidor real y trató de navegar usando localhost en lugar del nombre de host y tiene «404.7 No se Encuentra – La solicitud de filtrado módulo está configurado para denegar la extensión de archivo».

    De esta MANERA posterior a que me ayude a resolver esto.

  22. 0

    Lo tengo resuelto para mí, cuando me casilla de verificación habilitar para UrlRoutingModule-4.0:

    El Administrador de IIS > Módulos > seleccione UrlRoutingModule-4.0 > Módulo de Edición >
    marque la casilla de verificación «Invocar sólo para las solicitudes de ASP.NET aplicaciones o controladores administrados».

  23. 0

    Yo tenía el mismo problema: en un recién instalado equipo con Visual Studio 2013, la api web del proyecto fue trabajar bajo IISExpress, pero no bajo IIS local. He intentado todo lo que pude encontrar, pero al final el problema no era necesario con la API de Web, pero con MVC: incluso fue instalado, no hay proyecto de MVC se estaba ejecutando.

    Lo que funcionó para mí fue desinstalar IIS (desde AGREGAR o QUITAR Características de Windows), a continuación, vuelva a instalarlo y, a continuación, ejecutar aspnet_regiis -i. Tal vez esto ayude a alguien más.

  24. 0

    Me pasé un montón de tiempo tratando de hacer un montón de cosas finalmente se den cuenta de que yo era añadir mi web app no en Sitios/Sitios Web Predeterminados, pero en otro sitio web enlazadas a otro puerto. Obviamente, tratando de localhost en el puerto 80 daría un mensaje de error 404.

  25. 0

    yo no hago nada, sólo tiene que añadir esta etiqueta en la web.config, su trabajo
    este tema de uno de los siguientes puntos

    1. El uso de la Api de Web en el mismo proyecto utilizando MVC o asp.net formas

    2. Uso RouteConfig y WebApiConfig en el Mundial.asax
      como
      GlobalConfiguration.Configurar(WebApiConfig.Registro);
      RouteConfig.Registerroutes Al(RouteTable.Rutas);

    3. Uso RouteConfig para 2 propósitos, asp.net formas de usar con friendlyurl y mvc de enrutamiento para MVC enrutamiento

    sólo tiene que utilizar esta etiqueta en la web.config, va a trabajar.

    <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
       .........................
    </modules>
    </system.webServer>
  26. 0

    Topó con el mismo problema con la Web y API .Net Core API Web. Trabajó muy bien en el VS de 2017, mientras que la depuración, pero volvió 404 cuando se publicó en IIS 7.5. La solución para mí era cambiar la forma en que he creado el sitio. En lugar de publicación a la raíz de un Sitio Web (creada haciendo clic derecho Sitios…Añadir Sitio Web), he tenido que crear una Aplicación (creado por un clic derecho en una página Web…Agregar a la Aplicación) y publicar en esa carpeta. Tenga en cuenta que para la versión principal, tuve que cambiar la Aplicación a la Piscina .NET Framework Versión en «Sin Código Administrado».

Dejar respuesta

Please enter your comment!
Please enter your name here