views:

1692

answers:

5

I recently moved my asp.net appliaction from windows 2003 / IIS 6 to windows IIS7. No other changes, but now the file upload for the fckeditor doesn't work anymore. Anyone know the obvious mistake I made here. :)

Thanks

+4  A: 

The most likely problem is that the permissions need to be updated on the target folder. Check to make sure IUSR has create / write permissions to the upload directory.

Sohnee
alrady solved this one, IUSR needs to have write permissions. Thanks for the answers
Stuart
A: 

Like Sohnee says its most likly permissions, also make sure the 'uploads' folder actually exists in your 'public' folder (I'm not sure where this is in ASP).

Kris
A: 

Make sure that asp.net and iisuser_machinename user will have rights.

jalpesh
A: 

It have all rights I even set the everyone rights on all site foulders but with the same result. Could anybody tell me where is this magic checkbox which will allow files to be uploaded?

You know what this IIS 7 and all microsoft did with new vista like aplications is looking like a stupid joke. Imposible amount of icons and different useless buttons, as if it was made by paranoiac programmers. They just do not know how to sell more copies of windows and then change the "cover" give it the new name (vista or i'd call it "crazy interface windows") and sell it again and again.....

A: 

Hello, Maybe this will help.

I couldn't get it to work either. I had all the permissions set. By debugging, I found out that the frmupload.html did not have execute access on the isapi.dll.

In IIS 7.0 I went to the web site on the left side and highlighted it. Then on the right pane, I clicked on handler mappings. I noticed at the top that isapi and cgi were disabled at the top.

I looked below and saw all the enabled handlers. I also noticed that there was not one for *.html but there was ones for *. Anyways, I right clicked anywhere in the lower pane where the enabled handlers are and I got a short cut menu. EDIT FEATURE PERMISSIONS is the option you want to click on. Then you will see checkboxes for read, script, and execute. I notice execute was not checked so I checked it.

Now the ISAPI and CGI became enabled in the list. I tried uploading with FCKeditor and it worked. Just make sure your uploading the right file type to the right area or you might get invalid file or invalid file type message.

HOWEVER, i noticed I keep getting a new error. SYS is undefined error message on my web pages. Its a javascript error that usually happens when it can't find something. There are tons of reasons why you might get this error message if you google for it. In this case it was because I used Vista IIS7.0 to enable ISAPI with execute permissions. It went into my config file an made the correct setting change for enabling execute permission, however it erased all my handler setting!!!!

I took a backup copy of my webconfig and manually readded the settings. I think maybe its better to manually edit the webconfig file instead of letting IIS7 do it because it will do it but it might erase some of your settings.

Here is part of my webconfig file on VISTA IIS7 web server, before and after:

WebConfig BEFORE: enabling execute on cgi and isapi in VISTA IIS 7.0 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>

AFTER: notice the

is added and all my handlers disappear. I just readded them and it worked.

<!-- 
    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>


I am on a development machine VISTA so I didn't consider any security issues for opening up Execute. Hope this helps.

crowe