【发布时间】:2009-07-09 20:08:25
【问题描述】:
现在我正在处理一个项目的存根。在项目过程中,我需要能够从 Web 前端在服务器上设置消息,然后从 iPhone 查询服务器以读取消息。
虽然所有单独的部分都在工作并且我的请求正常,但我在使用此网络方法时遇到了问题
[WebMethod()]
public void setMessage(string message)
{
FileStream file = new FileStream("mymessage.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(file);
sw.Write(message);
sw.Close();
file.Close();
}
当我使用 iPhone 应用程序中的 SOAP 通过 HTTP Post 调用它时。
当我发出请求时,我在控制台中得到以下 xml。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>Server was unable to process request. ---> Access to the path 'c:\windows\system32\inetsrv\myMessage.txt' is denied.</faultstring>
<detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>
服务器是我老板配置的服务器,目前正以其他身份用作多个不同项目的内部测试服务器。
服务器是IIS服务器,不知道是什么版本,配置安装了ASP.NET。
脚本所在的位置与程序尝试编写的位置不同。我假设脚本是从那个目录运行的,这就是它试图在那里写的原因。是这样还是我错过了一些基本的东西?
如果有任何关于如何解决此问题的替代建议,我也很想听听他们的建议,因为我的知识库非常小。
谢谢!
【问题讨论】:
-
你有什么问题?你不明白哪一部分?
-
如果你想写入应用程序之外的某个地方,你应该指定该文件的完整路径。如果该文件在您的应用程序目录下,您可以根据需要使用
Server.MapPath转换虚拟路径(或手动指定路径,没有什么能阻止您这样做)。无论哪种情况,运行 ASP.NET 应用程序的用户帐户都应具有对该位置的写入权限。
标签: asp.net web-services soap file-io asmx