我最近将我的asp.net应用程序从Windows 2003 / IIS 6移到了Windows IIS7。 没有其他更改,但现在fckeditor的文件上传不再起作用。 任何人都知道我在这里犯的明显错误。 :)
由于
答案 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文件的一部分,之前和之后:
<!--
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用户拥有权限。