【问题标题】:Permission Denied error when uploading files in FCKEditor在 FCKEditor 中上传文件时权限被拒绝错误
【发布时间】:2009-05-08 07:44:56
【问题描述】:

我最近将我的 asp.net 应用程序从 windows 2003 / IIS 6 移至 windows IIS7。 没有其他更改,但现在 fckeditor 的文件上传不再起作用。 任何人都知道我在这里犯的明显错误。 :)

谢谢

【问题讨论】:

    标签: c# asp.net iis iis-7 fckeditor


    【解决方案1】:

    最可能的问题是需要更新目标文件夹的权限。检查以确保 IUSR 对上传目录具有创建/写入权限。

    【讨论】:

    • 这个已经解决了,IUSR需要有写权限。感谢您的回答
    【解决方案2】:

    也许这会有所帮助。

    我也无法让它工作。我设置了所有权限。通过调试发现frmupload.html对isapi.dll没有执行权限。

    在 IIS 7.0 中,我转到左侧的网站并突出显示它。然后在右窗格中,我单击了处理程序映射。我在顶部注意到 isapi 和 cgi 在顶部被禁用。

    我在下面查看并看到所有启用的处理程序。我还注意到 *.html 没有一个,但 *.html 有一个。无论如何,我右键单击下方窗格中启用的处理程序所在的任何位置,我得到了一个快捷菜单。编辑功能权限是您要单击的选项。然后你会看到读取、脚本和执行的复选框。我注意到未检查执行,所以我检查了它。

    现在 ISAPI 和 CGI​​ 已在列表中启用。 我尝试使用 FCKeditor 上传,它工作正常。只需确保将正确的文件类型上传到正确的区域,否则您可能会收到无效文件或无效文件类型消息。

    但是,我注意到我不断收到一个新错误。 SYS 在我的网页上是未定义的错误消息。它是一个 javascript 错误,通常在找不到某些内容时发生。如果您在谷歌上搜索,您可能会收到此错误消息,有很多原因。在这种情况下,这是因为我使用 Vista IIS7.0 启用了具有执行权限的 ISAPI。它进入我的配置文件并为启用执行权限进行了正确的设置更改,但是它删除了我所有的处理程序设置!!!!

    我备份了我的 webconfig 并手动读取了设置。我认为手动编辑 webconfig 文件而不是让 IIS7 这样做可能会更好,因为它会这样做,但它可能会删除您的一些设置。

    这是我在 VISTA IIS7 网络服务器上的 webconfig 文件的一部分,之前和之后:

    WebConfig BEFORE:在 VISTA IIS 7.0 web.config 中启用 cgi 和 isapi 上的执行

    <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules>
            <remove name="ScriptModule"/>
            <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </modules>
        <handlers>
            <remove name="WebServiceHandlerFactory-Integrated"/>
            <remove name="ScriptHandlerFactory"/>
            <remove name="ScriptHandlerFactoryAppServices"/>
            <remove name="ScriptResource"/>
            <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </handlers>
    </system.webServer>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
    

    之后:注意

    被添加,我所有的处理程序都消失了。我刚刚阅读了它们,它起作用了。

    <!-- 
        The system.webServer section is required for running ASP.NET AJAX under Internet
        Information Services 7.0.  It is not necessary for previous version of IIS.
    -->
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules>
            <remove name="ScriptModule" />
            <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        </modules>
        <handlers accessPolicy="Read, Execute, Script">
        </handlers>
    </system.webServer>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
    

    我在开发机器 VISTA 上,所以我没有考虑打开 Execute 的任何安全问题。希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      就像 Sohnee 所说的最可能的权限一样,还要确保“上传”文件夹确实存在于您的“公共”文件夹中(我不确定它在 ASP 中的位置)。

      【讨论】:

        【解决方案4】:

        确保 asp.net 和 iisuser_machinename 用户拥有权限。

        【讨论】:

          猜你喜欢
          • 2010-12-13
          • 2015-07-11
          • 2014-12-06
          • 1970-01-01
          • 1970-01-01
          • 2015-04-30
          • 1970-01-01
          • 2019-07-07
          相关资源
          最近更新 更多