简单的说,可以通过在 IIS
添加虚拟目录的方法做到,获取访问路径的时候就用 HttpContext.Current.Server.MapPath("~/xxx");
的方式。
下面详细讲一下具体怎么做……
首先看 IIS 上部署的项目网站结构:
有两个项目网站,NewsAPI
和 FileAPI
,现在想在 FileAPI
下访问 NewsAPI
下的 html
目录。
于是我在 FileAPI
下建了一个名叫 html
的虚拟目录,指向 NewsAPI
下的 html
文件夹。
注意:
配置好 IIS 后,还要设置 VS 为本地调试模式,才可以运行代码。
接下来是代码:
/// <summary>
/// 测试是否能访问其他项目目录下的文件
/// </summary>
/// <returns></returns>
public string Get()
{
string str = "";
try
{
string path = System.Web.HttpContext.Current.Server.MapPath("~/html/1.txt");
StreamReader sr = new StreamReader(path, System.Text.Encoding.GetEncoding("UTF-8"));
str = sr.ReadToEnd(); // 读取文件
sr.Dispose();
}
catch (System.Exception ex)
{
str = "报错了!" + ex.ToString();
}
return str;
}
只是测试我没有写很复杂,就是使用 HttpContext.Current.Server.MapPath("~/xxx");
根据虚拟目录来获取实际的物理路径,然后读取目录下的文件返回,path
得到的值就是物理路径,所以可以直接访问。
可以打个断点看 path
的值
OK!~
最后,关于 Server.MapPath
的用法大家可以看看这篇文章:server.mappath()