不能';t使用Server.MapPath保存XML文件

不能';t使用Server.MapPath保存XML文件,xml,asp-classic,Xml,Asp Classic,我有一个简单的asp经典程序,可以在用户单击复选框时更新xml文件。它在我的开发服务器中运行良好,但当我在主服务器中部署它时,它会显示 msxml3.dll错误“80070005”访问被拒绝 (错误在objXMLDoc.Save Server.MapPath(xmlfile)中)。我已经检查了权限,并且它与我的开发服务器相同 下面是xml文件 <notification> <staff> <pin>P001</pin> <al

我有一个简单的asp经典程序,可以在用户单击复选框时更新xml文件。它在我的开发服务器中运行良好,但当我在主服务器中部署它时,它会显示

msxml3.dll错误“80070005”访问被拒绝

(错误在objXMLDoc.Save Server.MapPath(xmlfile)中)。我已经检查了权限,并且它与我的开发服务器相同

下面是xml文件

<notification>
<staff>
    <pin>P001</pin>
    <allow>1</allow>
</staff>
<staff>
    <pin>P002</pin>
    <allow>0</allow>
</staff>
</notification>

P001
1.
P002
0
以及用于更新xml的asp经典代码

if Request.Form("updatebtn") = "Remove in Cc" then

    Set objXMLDoc = Server.CreateObject("MSXML2.DOMDocument.3.0")
    objXMLDoc.async = False
    objXMLDoc.load Server.MapPath(xmlfile)

    For Each xmlpin In objXMLDoc.documentElement.selectNodes("staff")

        pin = xmlpin.selectSingleNode("pin").text
        allow = xmlpin.selectSingleNode("allow").text

        if allow = 1 then

            if Request.Form("chk_" & pin) = "on" then

                Response.Write(pin & "<br/>")

                Set nodeBook = xmlpin.selectSingleNode("allow")
                nodeBook.Text = 0
                objXMLDoc.Save Server.MapPath(xmlfile) ' error when saving the xml 

            end if

        end if

    next

    Response.Redirect("notification.asp")

end if
如果Request.Form(“updatebtn”)=“在Cc中删除”,则
设置objXMLDoc=Server.CreateObject(“MSXML2.DOMDocument.3.0”)
objXMLDoc.async=False
objXMLDoc.load Server.MapPath(xmlfile)
对于objXMLDoc.documentElement.selectNodes(“staff”)中的每个xmlpin
pin=xmlpin。选择单节点(“pin”)。文本
allow=xmlpin。选择SingleNode(“允许”)。文本
如果allow=1,则
如果Request.Form(“chk_3;”和pin)=“on”,则
响应。写入(pin&“
”) 设置nodeBook=xmlpin。选择SingleNode(“允许”) nodeBook.Text=0 保存xml时objXMLDoc.Save Server.MapPath(xmlfile)错误 如果结束 如果结束 下一个 重定向(“notification.asp”) 如果结束
有没有我忽略的设置

非常感谢你的帮助

  • 您必须检查站点运行的IIS应用程序池使用的是哪个用户(可能是IUSR_xy)

  • 确保此用户在保存XML文件的文件夹中(在文件夹安全设置中)具有“覆盖”权限

  • 我曾经有一个问题,我的应用程序可以创建一个新文件,但由于这个原因无法覆盖它

  • 您必须检查站点运行的IIS应用程序池使用的是哪个用户(可能是IUSR_xy)

  • 确保此用户在保存XML文件的文件夹中(在文件夹安全设置中)具有“覆盖”权限


  • 我曾经遇到过一个问题,我的应用程序可以创建一个新文件,但由于这个原因无法覆盖它。

    权限相同,但与用于IIS的帐户相同吗?看起来您的iusr帐户可能没有使用msxml3.dll本身的权限。现在有一个更新版本的msxml-请尝试Server.CreateObject(“MSXML2.DOMDocument.6.0”)权限相同,但与用于IIS的帐户相同吗?看起来您的iusr帐户可能没有使用msxml3.dll本身的权限。现在有一个更新版本的msxml—请尝试Server.CreateObject(“MSXML2.DOMDocument.6.0”)