C# – How to retrieve physical path for virtual directory

ciiswcf

I have a wcf web service deployed in IIS 7. When an error occurs I need to log the message that caused the error. The log needs to be created on a network share where developers have access to the share (as we do not have access to the server where the service is deployed). A virtual directory was created in IIS whose physical path is on the network share.

How can I get the physical path of the virtual directory? I have tried using

System.Web.Hosting.HostingEnvironment.MapPath(virtualDirectoryPath)

but this just returns the physical path on the server where the service is located.

For example, if the virtual directory is "WSLogs" and I give the virtualDirectoryPath as "~/WSLogs" I will get back C:\inetpub\wwwroot\myServiceDirectory\WSLogs\

Best Answer

The virtual directory was created at the same level (under Default Web Site node) as the web service. After moving the virtual directory to be located under the web service node itself, I was able to get the physical path for the virtual directory using:

System.Web.Hosting.HostingEnvironment.MapPath(virtualDirectoryPath)

where the virtualDirectoryPath is ~/WSLogs