response for preflight has invalid http status code 405 web api con Angular >=2

Hace un par de días me encontré con ese error  cuando me disponía a conectar mi frontend  hecho con Angular CLI con Angular 4 con mi BackEnd hecho en WebAPI 2 de .NET , pero fue todo un dolor de cabeza, en primer lugar abrir los CORS para trabajarlo en desarrollo, porque sería comunicación entre dos servidores web diferentes, segundo el error de “response for preflight has invalid http status code 405”.

Resulta que las peticiones por Get funcionan perfectamente , pero por POST  asi se configuren headers en el servicio de angular sigue arrojando ese error, la única forma que funciona es con el encabezado “application/x-www-form-urlencoded” pero no envía correctamente los datos, por esta razón llegan los datos nulos.

Cuando sale el error y se pone un header diferente al antes mencionado por ejemplo un “application/json” verifiqué en la consola de chrome y encontré que el METHOD que aparece en la consola de Chrome es “OPTIONS” cuando debería ser  “POST”, fue algo tormentoso por que hice el llamado desde Jquery con POST y funcionó perfectamente, entonces no sabía que estaba mal por que en jquery funcionaba peor con angular no!.

Cuando  ya me estaba volviendo loco descubrí este articulo donde mencionan que se debe crear  un proxy  en el angular CLI y con esto funcionó como debía de funcionar, en el siguiente enlace encontraran el articulo en el que me base para ello.

Fuente:

https://juristr.com/blog/2016/11/configure-proxy-api-angular-cli/

Advertisements

Problema Module DLL ‘C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\isapi\spnativerequestmodule.dll’

Hace  un par de  días  tuve que  configurar un  servidor Sharepoint 2013 con un respectivo sitio pero al revisar que  el Portal del ESB no cargaba  después de que  días  atrás  estaba  funcionando sin problemas  mirando el Event View encontré este  error:

Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 3/22/2017 2:33:55 PM
Event time (UTC): 3/22/2017 6:33:55 PM
Event ID: 427a2fa568e6483daa0bd6964ae60e7b
Event sequence: 8
Event occurrence: 1
Event detail code: 0

Application information:
Application domain: /LM/W3SVC/1/ROOT/ESB.Portal-1-131346812332787728
Trust level: Full
Application Virtual Path: /ESB.Portal
Application Path: C:\inetpub\wwwroot\ESB.Portal\
Machine name: MSPWVA-DOFMRS02

Process information:
Process ID: 22684
Process name: w3wp.exe
Account name: MSPWVA-DOFMRS02\SOAInstall

Exception information:
Exception type: WebException
Exception message: The request failed with HTTP status 503: Service Unavailable.
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.Practices.ESB.Portal.BizTalkOperationsService.Operations.Applications()
at Microsoft.Practices.ESB.Portal.PortalHelper.GetAllApplications()
at Microsoft.Practices.ESB.Portal.Lists.MySetting.renderApplicationSettings()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

Request information:
Request URL: http://localhost/ESB.Portal/Reports/Reports.aspx?tzo=-4
Request path: /ESB.Portal/Reports/Reports.aspx
User host address: 127.0.0.1
User: MSPWVA-DOFMRS02\SPAdmin
Is authenticated: True
Authentication Type: Negotiate
Thread account name: MSPWVA-DOFMRS02\SOAInstall

Thread information:
Thread ID: 15
Thread account name: MSPWVA-DOFMRS02\SOAInstall
Is impersonating: False
Stack trace: at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at Microsoft.Practices.ESB.Portal.BizTalkOperationsService.Operations.Applications()
at Microsoft.Practices.ESB.Portal.PortalHelper.GetAllApplications()
at Microsoft.Practices.ESB.Portal.Lists.MySetting.renderApplicationSettings()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Custom event details:

Como indicio del problema tenía  que estuve configurando Sharepoint  del cual tambien aparecia  el siguiente error en el Event Viewer:

The Module DLL ‘C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\isapi\spnativerequestmodule.dll’ could not be loaded due to a configuration problem. The current configuration only supports loading images built for a x86 processor architecture. The data field contains the error number. To learn more about this issue, including how to troubleshooting this kind of processor architecture mismatch error, see http://go.microsoft.com/fwlink/?LinkId=29349.

Luego de buscar  mucho encontré esta solución:

Al parecer  es  un bug  pero  hasta  el momento es lo  que  parece.

Ejecutar este comando  con privilegios de administrador:

appcmd.exe set config -section:system.webServer/globalModules /[name=’SPNativeRequestModule’].preCondition:integratedMode,bitness64

Luego de  esto  has  un IISReset o reuniciar el IIS y  todo correra con normalidad

Fuente:http://bartwullems.blogspot.com.co/2013/08/sharepoint-error-module-dll-filescommon.html

 

Agregar /Eliminar DLL del GAC sin GacUtil

Hace poco tuve  el siguiente problema en un servidor de producción  con  un par de DLL que se quedaban en caché y no refrescaban los  ensamblados, traté de  recurrir  a mi  amigo GacUtil.exe  pero no funciono en el servidor Windows 2012 R2, entonces en vista de este problema   buscando en Internet  encontre  los siguientes pasos:

Primero debe  ingresar a la consola de PowerShell con privilegios de Administrador, luego segun lo que requiera  hacer:

  • Para Agregar DLL al GAC:
Set-location "c:\temp"
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$publish = New-Object System.EnterpriseServices.Internal.Publish
$publish.GacInstall("c:\temp\MyDLL.dll")
iisreset
  • Para Eliminar la DLL del GAC:
Set-location"c:\temp"
[System.Reflection.Assembly]::Load("System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
$publish= New-ObjectSystem.EnterpriseServices.Internal.Publish
$publish.GacRemove("c:\temp\MyDLL.dll")
iisreset
Esto funcionó en mi caso y espero que  a ti  también te sirva!!