0

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

谢谢

4

4 回答 4

4

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

于 2009-05-08T08:21:41.970 回答
1

也许这会有所帮助。

我也无法让它工作。我设置了所有权限。通过调试,我发现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 Web 服务器上的 webconfig 文件的一部分,之前和之后:

WebConfig 之前:在 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 的任何安全问题。希望这可以帮助。

于 2009-12-05T18:43:00.560 回答
0

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

于 2009-05-08T08:29:02.200 回答
0

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

于 2009-05-08T10:11:48.100 回答