2011-03-04 9 views
14

aquí es mi línea de código y me tira error en HttpConext.CurrentHttpContext null en el servicio WCF?

string postData = "username=" + HttpContext.Current.Server.UrlEncode(USERNAME); 
+0

¿Dónde se indica este código? dentro de un contrato de datos de servicio WCF? –

+0

el código colocado dentro del wcf service.svc.cs –

Respuesta

21

eso es normal. No hay contexto HTTP en un servicio web de WCF. Un servicio WCF podría incluso no estar alojado dentro de un servidor web. Puede alojar dentro de una aplicación de consola. Hay un truco que le permite establecer la ASP.NET Compatibility Mode:

<system.serviceModel>   
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel> 

pero no es algo que le recomiendo que hacer.

Me gustaría hacer esto en su lugar:

var postData = "username=" + HttpUtility.UrlEncode(USERNAME); 

Y porque tengo un séptimo sentido acerca de a dónde va con este código (enviándolo como una petición HTTP a un servidor web remoto) vamos a llegar directamente a la punto:

using (var client = new WebClient()) 
{ 
    var values = new NameValueCollection 
    { 
     { "username", USERNAME } 
    }; 
    var result = client.UploadValues("http://foo.com", values); 
} 
+0

estoy probando este servicio en mi máquina local ¿no hay manera? –

+1

@Abu Hamzah, no importa, no HttpContext dentro del servicio WCF, por favor. –

+0

+1 para recordar que wcf no siempre está en un servidor web – Michel

6

Si desea habilitar la HttpContext se puede establecer el indicador aspNetCompatibilityEnabled en web.config.

<system.serviceModel>   
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel>