我正在尝试在同一台计算机上配置相同IIS管理屏幕的两个网站之间共享文件夹。
我在其他问题中尝试过这些解决方案,但我无法让它们发挥作用。
我尝试了以下内容:
我创建了这样的软链接:
mklink /d C:\Site2\Images C:\Site1\Images
我使用了软链接而不是硬链接,因为rd命令只会删除软链接而不是删除文件夹中的文件。然后,我可以重新部署我的网站,而不必担心图像被删除。
我怀疑出于安全原因,文件夹无法在网站之间共享。
我还尝试制作这样的文件夹:
mklink /j C:\Site2\Images C:\Site1\Images
我也尝试过使用虚拟目录配置。那也行不通。我怀疑它是因为我试图使用VB代码而不是URL来访问文件夹。
这就是代码的样子:
Public Shared Function Ck4Image(ByVal SubDir As String) As String
Dim countfiles As String = ""
Dim ckdir As String = HttpContext.Current.Server.MapPath("~/Images/") + Trim(SubDir) + "/" ' Set the path.
Dim MyName = Dir(ckdir, vbDirectory) ' Retrieve the first entry.
If MyName = "" Then
Ck4Image = ""
Exit Function
End If
countfiles += SubDir & "|"
For Each afile As FileInfo In New DirectoryInfo(ckdir).GetFiles("*.jpg")
countfiles += afile.Name & "|"
Next
Ck4Image = countfiles
End Function
以下是我的问题:
MapPath函数中的波形语法是什么?它不在我阅读的文档中。
如何实现在Site1和Site2之间共享同一文件夹的目标?
注意:我在堆栈上列出了这个而不是服务器错误,因为我怀疑我的代码中存在阻止虚拟目录工作的问题。
答案 0 :(得分:0)
我认为你这里的事情过于复杂。你真的不需要使用MapPath。
我对我们的网站所做的是使用web.config中的appSettings来定义多个Web应用程序中的共享文件路径。
<appSettings>
<add key="IMAGE_DIR" value="C:\shared_images\" />
</appSettings>
然后您可以轻松地在代码中引用路径:
Dim ckdir As String = AppSettings("IMAGE_DIR") + Trim(SubDir) + "/"