C# 要将文件从WCF保存到IIS虚拟目录?
我正在应用程序中使用WCF服务。所有服务都作为窗口服务托管。我在IIS中有一个虚拟目录来保存用户文件(可能是PDF或TXT)。我想为每个用户创建一个特定的文件夹,并将其信息文件保存在该文件夹中。如何创建文件夹并通过WCF将文件上载到IIS 例如:虚拟目录路径为C# 要将文件从WCF保存到IIS虚拟目录?,c#,wcf,visual-studio-2008,iis,C#,Wcf,Visual Studio 2008,Iis,我正在应用程序中使用WCF服务。所有服务都作为窗口服务托管。我在IIS中有一个虚拟目录来保存用户文件(可能是PDF或TXT)。我想为每个用户创建一个特定的文件夹,并将其信息文件保存在该文件夹中。如何创建文件夹并通过WCF将文件上载到IIS 例如:虚拟目录路径为http://10.10.10.1/TempUserFolder/ 我想为UserID=1创建一个类似http://10.10.10.1/TempFolder/UserID1/。 然后将他的信息文件保存到该文件夹,http://10.10.
http://10.10.10.1/TempUserFolder/
我想为UserID=1
创建一个类似http://10.10.10.1/TempFolder/UserID1/
。
然后将他的信息文件保存到该文件夹,http://10.10.10.1/TempFolder/UserID1/Info.pdf
当我使用
System.IO
时,收到一条错误消息URI格式不受支持。请用正确的方式引导我。我真的很感谢你的帮助。我正在使用VS200获取物理目录名,请使用
Server.MapPath('TempFolder/UserID1');
更新
正如评论中所指出的,上述解决方案仅在IIS托管解决方案中使用asp.net兼容性时有效
如果您不想硬编码目录,例如,如果它部署到不同的服务器,您可以获取WCF程序集的目录,然后从中找出所需目录的相对关系
例如,假设DLL位于bin目录中,而temp目录为1级以上,则以下代码应该可以工作:
string sDirectory = System.Reflection.Assembly.GetExecutingAssembly.Location;
sDirectory = System.IO.Path.Combine(sDirectory, "..\TempFolder\UserID1");
如果您的windows服务位于同一台IIS主机服务器上,则在接收文件时,您可以在WCF windowsservice中使用绝对路径,例如如果映射到c:/TempFolder/,在c:/TempFolder/中创建新文件夹并将文件存储在该位置,如果它位于不同的计算机上,则可以创建网络共享,然后创建文件夹并将文件复制到该位置
你们可以在网上找到很多文章来演示如何通过wcf上传文件
这将为当前应用程序提供一个虚拟目录。使用此目录,您可以附加您创建的文件夹名称
public string GetIISPath()
{
string urlscheme = System.Web.HttpContext.Current.Request.Url.Scheme;
string host = System.Web.HttpContext.Current.Request.Url.Host;
int port = System.Web.HttpContext.Current.Request.Url.Port;
//Ignore Http Port
if (port != 80)
host = host + ":" + port;
string vPath = urlscheme + "://" + host + "/";
return vPath;
}
您好,谢谢您的回答。您能给我举个例子吗?我不知道如何在wcf应用程序中使用它。我已经尝试了HttpContext.Current.Server.MapPath(“TempFolder”)但它总是返回null。我认为它只能在基于web的应用程序中使用。这只有在IIS和ASP.Net兼容模式下的主机是可用的情况下才能工作enabled@chris.house.00:非常好。我太习惯WCF/Web应用组合解决方案了。我用不同的解决方案更新了答案。谢谢你的敏锐眼光。你的帖子有点矛盾。您声明您的服务作为Windows服务托管,但您引用的是IIS虚拟目录。如果您的服务确实作为Windows服务托管,那么为什么要尝试使用IIS虚拟目录?造成这些错误的代码是什么样子的?@Chong如果你得到了这个问题的解决方案,请你分享代码或链接,我可以从中得到答案。我不理解Brijesh的说法。因此,如果可以的话,请帮助我,我也陷入了同样的境地,在我的案例中使用webHttpBinding。。先谢谢你。。。