在我的ASP.NET应用程序中,我创建了一个文本文件,并将数据写入该文件。我将该文件保存在服务器上的指定位置。这是一个内部网应用程序。
当我使用Visual Studio在本地运行我的应用程序时,我可以通过应用程序创建/写入文件并将其保存到该网络位置,但当我在服务器上部署应用程序时,然后我试图创建文件。
上面写着“拒绝访问”
我不知道有什么额外的事情,我需要做,这样我就可以创建一个文本文件,并保存到指定的位置。
在这个应用程序中,我正在验证一组可以使用这个应用程序的用户。
我是否需要采取任何额外的步骤来创建服务器位置上的文件,然后保存数据到它?
下面是我的代码:
string DirectoryPath = getDirectortyPath();
StreamWriter file = new StreamWriter(DirectoryPath);
file.WriteLine(FullLine);
public string getDirectortyPath(string Year,string Quarter)
{
return ConfigurationManager.AppSettings["ReportPath"] + ".txt";
}
字符串
4条答案
按热度按时间qncylg1j1#
在函数中添加:
字符串
型
hfwmuf9z2#
通常在开发时,IIS express会在您的本地帐户下运行。这意味着它可以访问与您相同的网络驱动器。
除非另有说明,否则部署的应用程序通常在IIS_IUSRS组下运行
你有几个选择:
第一个选项并不理想,这意味着几乎所有使用标准配置在网络上运行的Web应用程序都可以访问该网络共享。
第二个选项可能在短期内有用,但这意味着应用程序可以访问您的帐户所做的一切。如果您的帐户是管理员帐户和/或您对服务器具有管理员访问权限,这可能非常危险。
第三种选择总体上是最好的,但需要更多的设置。
要设置标识,您需要在IIS中创建一个新的应用程序池,然后使用高级设置将
Identity
选项设置为Custom account
值,然后输入相应的域\用户名和密码。7kjnsjlb3#
其他的答案已经说明了这可能是由于IIS帐户没有适当的权限。我很确定他们是对的。
根据经验,还有其他选择;尽管这些可能不适用于您的特定情况。
\\fileserverName\directory\file.txt
;但是在发布应用程序后,这并不起作用。事实证明,当我使用
\\fileserverName.domain.local\directory\file.txt
时,它确实工作了。Web服务器根本不知道服务器的简称;因为它只添加到我们的办公室域,而不是Web服务器域。4dc9hkyq4#
可能的原因是应用程序池的标识对创建/追加文件的网络位置没有写访问权限。
确保应用程序池的标识设置为对该网络位置具有读/写访问权限的帐户。