我写了一个接受和存储消息的简单WCF服务。它在本地托管时工作正常。我仍然在IIS 6上运行。但是,当我启用服务将消息存储到xml的能力时,出现以下错误:访问c:\ windows \ system32 \ inetsrv \ Onno.xml时被拒绝(从荷兰语翻译过来,因此可能与真正的英文错误信息不匹配)。 这很奇怪,因为该服务并未从所提及的目录运行。而且,文件onno.xml不存在。服务应该将其创建为在IIS6中承载的WCF服务中的默认目录?
xelement.Save("onno.xml");
时
File.Exists("onno.xml")==false
有什么不对?
- 是否必须为IIS托管的WCF服务中的文件IO操作指定默认目录?
- 我必须调整权限吗?
编辑: 我试图执行迈赫达德的与MapPath的功能从而解决办法:
public void Persist(Message message)
{
foreach (var recipient in message.Recipients)//recipient is a string
{
XElement xml_messages;
string path;
try
{
path = HttpContext.Current.Server.MapPath("~/"+recipient+FileExtension);
//FileExtension=".xml"
//Null reference exception thrown from this line
}
catch (Exception e)
{
throw new Exception("Trying to get path " + e.Message);
}
try
{
xml_messages = XElement.Load(path);
}
catch
{
xml_messages = XElement.Parse("<nothing/>");
}
var element = (XElement) message;
if (xml_messages.IsEmpty)
{
xml_messages =
new XElement("messages",
new XAttribute("recipient", recipient),
element
);
}
else
{
xml_messages.Add(element);
}
xml_messages.Save(path);
}
}
但是我被一个空引用异常招呼?该异常在MapPath行中生成。帮帮我?