2011-03-04 25 views
14

burada kod benim çizgidir ve bu normaldir HttpConext.CurrentHttpContext, WCF hizmetinde null?

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

Bu kod nereye yerleştirilir? bir WCF Hizmet Verileri Sözleşmesi içinde? –

+0

wcf service.svc.cs içine yerleştirilen kod –

cevap

21

bana hata atar. WCF web hizmetinde HTTP Bağlamı yoktur. Bir WCF servisi bir web sunucusunda bile barındırılamayabilir. Bir konsol uygulamasında ev sahibi olabilirsiniz. Orada ASP.NET Compatibility Mode ayarlanmasına imkan veren bir hüner:

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

ama Yaptığın öneriyoruz şey değildir.

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

Ve senin bu kodla nereye hakkında 7 duygusu var çünkü (bir uzak web sunucusuna bir HTTP isteği olarak göndermeden) en düz dönelim:

yerine yapardı nokta: HttpContext etkinleştirmek istiyorsanız

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

Bu servisi yerel makinemde test ediyorum yol yok mu? –

+1

@Abu Hamzah, önemli değil, WCF servisi içinde HttpContext lütfen. Wcf'nin her zaman bir web sunucusunda olmadığını hatırlatmak için –

+0

+1 – Michel

6

web config aspNetCompatibilityEnabled bayrağı ayarlayabilirsiniz.

<system.serviceModel>   
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />  
</system.serviceModel> 
İlgili konular