在FCKEditor中上载文件时出现权限被拒绝错误

时间:2009-05-08 07:44:56

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

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

由于

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

也许这会有所帮助。

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

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

我看了下面,看到了所有启用的处理程序。我也注意到* .html没有一个,但有*。无论如何,我右键单击下方窗格中启用的处理程序所在的任何位置,我得到了一个快捷菜单。 EDIT FEATURE PERMISSIONS是您要单击的选项。然后,您将看到read,script和execute的复选框。我注意到没有检查执行,所以我检查了它。

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

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

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

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

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

<!-- 
    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的任何安全问题。希望这会有所帮助。

答案 2 :(得分:0)

就像Sohnee说它最喜欢的权限,也确保'uploads'文件夹实际存在于'public'文件夹中(我不确定它在ASP中的位置)。

答案 3 :(得分:0)

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