メッセージを受け入れて保存する単純な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の機能を備えたMehrdadのソリューションを実装してみました:
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);
}
}
私はnull参照例外で迎えていますが?例外はMapPath行で生成されます。助けて?