servicio publicar net mvc deploy asp c# asp.net api iis asp.net-web-api

c# - publicar - Error de DefaultInlineConstraintResolver en WebAPI 2



web api json c# (4)

Estoy usando Web API 2 y obtengo el siguiente error cuando envío una POST a mi método API usando IIS 7.5 en mi casilla local.

The inline constraint resolver of type ''DefaultInlineConstraintResolver'' was unable to resolve the following inline constraint: ''string''. Line 21: GlobalConfiguration.Configuration.EnsureInitialized();

Ninguna de mis API funciona con IIS. Sin embargo, puedo ejecutar mi proyecto API en Visual Studio usando IIS Express y hacer una POST con éxito a mi API de inicio de sesión, pero cuando intento hacer una solicitud GET a otra llamada API, obtengo el error de resolución de restricción.

Para solucionar este problema, creé un nuevo proyecto Web API 2 en Visual Studio y comencé a importar las API existentes en el nuevo proyecto de una en una y las ejecuté para garantizar que funcionaran. Al usar IIS Express con este nuevo proyecto, obtengo los mismos resultados exactos que obtuve con mi proyecto API existente.

¿Que me estoy perdiendo aqui? Incluso con un nuevo proyecto, no puedo hacer solicitudes GET sin tener que enfrentar este problema de resolución de restricciones.


El error significa que en algún lugar de una ruta, especificó algo así como

[Route("SomeRoute/{someparameter:string}")]

"cadena" no es necesaria, ya que es el tipo asumido si no se especifica nada más.

Como indica el error, DefaultInlineConstraintResolver que se envía la API web no tiene una restricción en línea llamada string . Los compatibles por defecto son los siguientes:

// Type-specific constraints { "bool", typeof(BoolRouteConstraint) }, { "datetime", typeof(DateTimeRouteConstraint) }, { "decimal", typeof(DecimalRouteConstraint) }, { "double", typeof(DoubleRouteConstraint) }, { "float", typeof(FloatRouteConstraint) }, { "guid", typeof(GuidRouteConstraint) }, { "int", typeof(IntRouteConstraint) }, { "long", typeof(LongRouteConstraint) }, // Length constraints { "minlength", typeof(MinLengthRouteConstraint) }, { "maxlength", typeof(MaxLengthRouteConstraint) }, { "length", typeof(LengthRouteConstraint) }, // Min/Max value constraints { "min", typeof(MinRouteConstraint) }, { "max", typeof(MaxRouteConstraint) }, { "range", typeof(RangeRouteConstraint) }, // Regex-based constraints { "alpha", typeof(AlphaRouteConstraint) }, { "regex", typeof(RegexRouteConstraint) }


Obtuve este error cuando escribo como declarado como cadena. Cuando cambié eso a int, comenzó a funcionar

[HttpGet][Route("testClass/master/{Type:string}")]


También recibí este error cuando dejé un espacio entre el nombre de la variable y el tipo de variable en la ruta, así:

[HttpGet] [Route("{id: int}", Name = "GetStuff")]

Debería ser el siguiente:

[HttpGet] [Route("{id:int}", Name = "GetStuff")]


Una cosa más si no puede usar int, bool o cualquier otra restricción, es clave y debe eliminar los espacios en blanco.

//this will work [Route("goodExample/{number:int}")] [Route("goodExampleBool/{isQuestion:bool}")] //this won''t work [Route("badExample/{number : int}")] [Route("badExampleBool/{isQuestion : bool}")]