Bitte sehen Sie die Antwort von ongle unten. Es ist viel besser als dieses.
Nach weiteren Informationen aktualisiert
Folgendes hat bei mir funktioniert. Ich habe es mit einem neuen WCF-Dienst getestet, den ich über einen Service1.svc auf IIS gehostet habe.
- In
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
zu Web - Config. <system.serviceModel>..</ ..>
existierte bereits.
- In
AspNetCompatibilityRequirementsAttribute
den Dienst mit Modus erlaubt.
- Verwenden Sie
HttpContext.Current.Server.MapPath(".");
diese Option , um das Stammverzeichnis abzurufen.
Unten finden Sie den vollständigen Code für die Serviceklasse. Ich habe keine Änderungen an der IService1-Schnittstelle vorgenommen.
[AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{
public void DoWork()
{
HttpContext.Current.Server.MapPath(".");
}
}
Und unten ist ein Auszug aus der web.config.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<behaviors>
</behaviors>
<services>
</services>
</system.serviceModel>
Alte Antwort
Was meinst du mit dem Arbeitsordner? WCF-Dienste können auf verschiedene Arten und mit unterschiedlichen Endpunkten gehostet werden, sodass der Arbeitsordner etwas mehrdeutig ist.
Sie können den normalen "Arbeitsordner" mit einem Aufruf von Directory.GetCurrentDirectory () abrufen .
HttpContext ist ein ASP.Net-Objekt. Selbst wenn WCF auf IIS gehostet werden kann, ist es immer noch nicht ASP.Net. Aus diesem Grund funktionieren die meisten ASP.Net-Techniken nicht standardmäßig. OperationContext ist das WCF-Äquivalent zu HttpContext. Der OperationContext enthält unter anderem Informationen zur eingehenden Anfrage und zur ausgehenden Antwort.
Am einfachsten ist es jedoch, den Dienst im ASP.Net-Kompatibilitätsmodus auszuführen, indem Sie ihn in der Datei web.config umschalten. Dies sollte Ihnen Zugriff auf den ASP.Net HttpContext geben. Es wird Sie jedoch auf das * HttpBindings- und IIS-Hosting beschränken. Fügen Sie der web.config Folgendes hinzu, um den Kompatibilitätsmodus umzuschalten.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
</system.serviceModel>