2010-11-22 11 views
2

HttpContext.Current.Request.ServerVariables [ "SERVER_PORT"] HttpContext.Current.Request.ServerVariables [ "SERVER_PORT_SECURE"] HttpContext.Current.Request.ServerVariables [ "SERVER_NAME"] HttpContext.Current.Request .ApplicationPathHttpcontext für einen Web Service

Ich möchte auf diesen Wert über einen Webservice -C# zugreifen, wenn ich diese Werte im Webdienst aufrufen, bekomme ich null für alle oben genannten, wo wie oben für Webseiten (aspx) funktioniert.

+0

könnten Sie versuchen, [WebMethod (EnableSession: = True)] zu Ihrer Webmethode hinzuzufügen. Ich habe es nicht versucht !! – genericuser

+0

möglich duplicate von [Webmethod mit HttpContext gibt NULL-Referenzausnahme zurück.] (Http://stackoverflow.com/questions/4250129/webmethod-using-httpcontext-returns-null-reference-exception) –

+0

Bitte aufhören zu fragen die gleiche Frage über und erneut. –

Antwort

2

Welche Art von Webservice verwenden Sie? asmx oder wcf? Sie sollten mit asmx Dienste gut funktionieren, aber wenn Sie WCF verwenden, werden Sie müssen das folgende Attribut der Methode hinzuzufügen:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
1

Wenn es ein WCF-Webdienst ist, dass Sie Folgendes ausführen können:

[AspNetCompatibilityRequirementsAttribute(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class FooBar : IFooBar 
{ 
    public void DoSomething() 
    { 
     HttpContext context = HttpContext.Current; 
     if (context != null) 
     { 
      // Should get here now 
     } 
    } 

} 

Der Schlüssel ist [AspNetCompatibilityRequirementsAttribute(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] hinzuzufügen.

3

Wie andere bereits erwähnt haben, müssen Sie die ASP.NET-Kompatibilität aktivieren. Sie können dies auch über die Konfiguration aktivieren, wenn Sie Ihren Code über Attribute wie so nicht einschränken wollen:

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

Here's a great resource, die durch Aktivierung Kompatibilitätsmodus machte die zugrunde liegende Funktionalität und Kompromisse zu mir geholfen zu erklären.

+0

Es wurde für die web.config von asmx hinzugefügt, machte aber keinen Unterschied. – Sharpeye500

1

Haben Sie versucht, Ihre Methode mit EnableSession auf True zu definieren?

[WebMethod(EnableSession = true)] 
    public string your_public_method(your_params) 
    { [...] }