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\
In the Internet Information Services window, expand server name (where server name is the name of the server). Right-click the Web site that you want (for example, Default Web Site), point to New, and then click Virtual Directory.
First of all, let's get the overview of both. Physical path - This is the actual path the file is located by IIS. Virtual path - This is the logical path to access the file which is pointed to from outside of the IIS application folder.
Virtual Path or Relative Virtual Path: The path that the application identifies or is identified by from its Web server. For instance, in IIS (or OWIN) you may have a resource directory for your images in folder c:\\inetpub\ftp\images but the developer maps this folder to the app like so... ~\Images .
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With