【问题标题】:Letting .json files be written too - .NET MVC也可以编写 .json 文件 - .NET MVC
【发布时间】:2014-09-21 03:55:27
【问题描述】:

我收到错误提示

异常详细信息:System.UnauthorizedAccessException:访问 路径“E:\web\aawebapp\Content\events\events.json”被拒绝。

ASP.NET 无权访问请求的资源。考虑 向 ASP.NET 请求授予对资源的访问权限 身份。 ASP.NET 有一个基本进程标识(通常 IIS 5 上的 {MACHINE}\ASPNET 或 IIS 6 和 IIS 7 上的网络服务,以及 IIS 7.5 上配置的应用程序池标识),如果 该应用程序不是模拟的。如果应用程序是 冒充 via ,身份将是 匿名用户(通常是 IUSR_MACHINENAME)或经过身份验证的用户 请求用户。

要授予 ASP.NET 对文件的访问权限,请右键单击文件中的文件 资源管理器,选择“属性”并选择“安全”选项卡。点击“添加” 添加适当的用户或组。突出显示 ASP.NET 帐户, 并选中所需访问权限的复选框。

当我尝试执行以下操作时,会在控制器中发生这种情况。

string eventspathway = 
HostingEnvironment.MapPath(@"~/Content/events/events.json");

System.IO.File.WriteAllText(eventspathway, newtext);

当我在 localhost/debug 上运行时,这工作正常,但在 webdeployed 时不起作用,因此会吐出上述所有错误。

【问题讨论】:

    标签: c# ajax asp.net-mvc json iis


    【解决方案1】:

    这里有什么难理解的?该异常的含义正是它所说的。

    您的网络应用程序在称为应用程序池(应用程序池)的 IIS 工作进程(w3wp.exe —“全球网络工作进程”中运行,明白吗?)。该过程在一个帐户下运行。在这些凭据下运行的任何进程都将无法读取(或写入)缺少必备权限的路径。

    您(或您的系统管理员)需要授予应用程序池身份,您的应用程序在该身份下运行足够的权限来执行它需要执行的操作。或者您需要找一个地方来存放您的应用程序池身份具有足够权限的数据。

    另一种选择——不推荐用于生产系统! — 将在本地系统帐户下运行应用程序池。

    有关详细信息,请参阅

    【讨论】:

    • 与 App_Data 有不同的权限吗?我可以从那里读/写。我还将图像、脚本、css 等都存储在我的 Content 文件夹(这个 .json 所在的位置)中。所以我想我不知道如何更改这个特定文件的权限?
    • 你需要看看。我很确定应用程序池身份仅对 web 应用程序的目录具有读取权限,但 app_data 除外。其他任何事情都会带来安全风险:您真的希望破解您网站的人能够...为您改进...您的源文件和内容吗?
    • 这是有道理的...我想在题外话上,因为我找不到任何东西,有没有办法让 AJAX 访问我的应用程序 App_Data?我曾尝试使用 url:App_Data/events.json,但它返回一个HTTP Error 404.8 - Not Found,表示出于安全目的它是隐藏的。有没有办法打开异常?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2020-12-15
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多