Search code examples
c#web-servicesoutputasmx

Adding content files to and accessing content files from a web service


I want to include an XML file in the bin directory of my web application/web service. I've included the bin folder in my project in Visual Studio and added the file. I set its Build Action to "Content" and Copy to Output Directory to "Copy Always". When my code goes to find it, I use

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
if (!dir.EndsWith(@"\")) dir += @"\";

to get the directory and return it as appPath, where appPath is (unescaped version):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\0c7655f\d4908928\assembly\dl3\5cf9fd67\fdc52284_ffa7d201\

then I append the file name of my XML file (where string filename = "myXmlFile.xml") to read it:

StreamReader reader = new StreamReader(appPath + filename);

But I get an exception on that line of code, that it could not find my file. I am handling for escaping of the slashes fine, so it is not that. When I checked the physical directory that the path points to, it was not copied to that directory, and that is the cause of the exception. So how do I get my file to get copied there?


Solution

  • How about using HostingEnvironment.ApplicationPhysicalPath

    var dir = Path.Combine(HostingEnvironment.ApplicationPhysicalPath, "bin\\filename.xml")
    

    See related question how to get the application path in asp.net?.