Use The AsyncFileUpload From The AjaxControlToolkit In A .Net 2.0 Project?
Jul 24, 2010
I have a project that for political reasons cannot be moved to a later version of .Net and would love to have a drop-in control for uploading files better than the old FileUpload control.
I'd like to use the AsyncFileUpload control, but it's not in the latest version of the toolkit that is supported in the 2.0 framework.
I've looked at some of the flash based controls, but integrating them would trigger a full regression test of the project I'm on (multiple weeks).
We've lived with the FileUpload control because our files are small, but the error handling when a file gets larger won't be unacceptable much longer.
I just found Uploadify. At first I didn't think it would work, but I checked out the forums any way. I found this link [URL] It works great. I can do whatever I want to in the upload handler.
The javascript functions just block / release a submit button, to prevent problems during uploads.This works fine on localhost, but when deployed online on a GoDaddy server, I can't seem to upload files over a few KB, even when locally I could upload bigger files (~2MB)...I can't seem to find the reason for this behavior, could it be on the IIS? I read something about the app pool clearing before the upload could complete, could this be happening?
Btw, just in case, server-side I just take the picture out of this control
There's some extra logic in there about whether I'm in edit mode or not, and if the current record has a picture, I'll take that over no picture, And then I store it on the database.
I am uploading an image with AsyncFileUpload, it works well, but i want to show to the user the image which him just uploaded, but i am having troubles to make that work.I have tried the OnClientUploadComplete event which receive sender and args paramenters, but the second paramenter only have the file name (without relative url), lenght, but not the file name after saved on the server.I also tried ScriptManager.RegisterClientScriptBlock and call my own function in order to pass the url, but for some reason i can't select the img control with jquery, seems like that peace of code is executing in another instance of the page... not sure.
I'm trying to use the AsyncFileUpload control from the Asp.net Ajax Control Toolkit (Sept 30, 2009 stable build: 30930) . I've created a demo application and the control works fine. Files upload and all is well. When I try to use the control in my real application, I'm always receiving an error stating "The file attached is invalid". The AsyncFileUpload control returns this when the file uploaded is null.
To isolate the problem, I created a new master page exactly like the master page in my demo app. I also created an aspx page exactly like the page in my demo app. The upload still fails with a "The file attached is invalid" error. I also compared the web.config for the real app and the demo app and couldn't identify any differences that should matter. The code below is the test code in my real app. This code is exactly the same as the functioning code in the demo app with the exception of having different class names and file names. The web.config listed below is from the real app with the appsettings and connectionstrings removed. Real App Test Master Page:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="aaaMasterPage.master.cs" Inherits="L1Admin.aaaMasterPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> <script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> <asp:ContentPlaceHolder id="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="scriptManager" EnablePartialRendering="true" runat="server" AsyncPostBackTimeout="180" /> <div> <asp:ContentPlaceHolder id="content" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html> Test Page: <%@ Page Language="C#" MasterPageFile="~/aaaMasterPage.master" AutoEventWireup="true" CodeFile="aaaFileUploadTest2.aspx.cs" Inherits="aaaFileUploadTest2" Title="Untitled Page" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> <script type="text/javascript"> function pageLoad(sender, args) { } function startUpload(sender,args) { $('#uploadMessage p').html(); $('#uploadMessage').hide(); } function uploadComplete(sender,args) { showUploadMessage(args.get_fileName() + " uploaded succesfully - " + + args.get_length() + " bytes", ''); } function uploadError(sender, args) { showUploadMessage("An error occurred during uploading. " + args.get_errorMessage(), '#ff0000'); } function showUploadMessage(text, color) { $('#uploadMessage p').html(text).css('color', color); $('#uploadMessage').show(); } </script> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="content" Runat="Server"> <div id="uploadMessage"><p></p></div> <ajax:AsyncFileUpload ID="pageBannerUpload" CssClass="file_upload" OnClientUploadError="uploadError" OnClientUploadStarted="startUpload" OnClientUploadComplete="uploadComplete" onuploadedcomplete="upload_UploadedComplete" runat="server" /> </asp:Content> Real App Test Page Code Behind: using System; using System.IO; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; public partial class aaaFileUploadTest2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void upload_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) { if (pageBannerUpload.HasFile) { string path = MapPath("~/") + Path.GetFileName(e.filename); pageBannerUpload.SaveAs(path); } } } Real App Test Web.config: <?xml version="1.0"?> <!-- Note: As an alternative to hand editing this file you can use the web admin tool to configure settings for your application. Use the Website->Asp.Net Configuration option in Visual Studio. A full list of settings and comments can be found in machine.config.comments usually located in WindowsMicrosoft.NetFrameworkv2.xConfig --> <configuration> <configSections> <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/> <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> </sectionGroup> </sectionGroup> </sectionGroup> </configSections> <appSettings> </appSettings> <connectionStrings> </connectionStrings> <system.web> <!-- Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development. --> <compilation debug="true"> <assemblies> <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> </assemblies> <codeSubDirectories> <add directoryName="CSCode"/> <add directoryName="VBCode"/> </codeSubDirectories> </compilation> <!-- The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. --> <authentication mode="Windows"/> <!-- The <customErrors> section enables configuration of what to do if/when an unhandled error occurs during the execution of a request. Specifically, it enables developers to configure html error pages to be displayed in place of a error stack trace. <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> --> <pages> <controls> <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add tagPrefix="Annsa" namespace="Annsa.Controls" assembly="Annsa.Controls"/> </controls> <namespaces> <add namespace="Microsoft.VisualBasic"/> <add namespace="System.Data"/> <add namespace="System.Drawing"/> </namespaces> </pages> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules> <identity impersonate="true"/> <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/> <!-- SESSION STATE SETTINGS mode="Off|InProc|StateServer|SqlServer" By default ASP.NET uses cookies to identify which requests belong to a particular session. If cookies are not available, a session can be tracked by adding a session identifier to the URL. To disable cookies, set sessionState cookieless="true". --> <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="false" timeout="20"/> <!-- GLOBALIZATION This section sets the globalization settings of the application. --> <xhtmlConformance mode="Legacy"/> </system.web> <location path="Pages"> <system.web> <xhtmlConformance mode="Transitional"></xhtmlConformance> </system.web> </location> <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> <providerOption name="CompilerVersion" value="v3.5"/> <providerOption name="WarnAsError" value="false"/> </compiler> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4"> <providerOption name="CompilerVersion" value="v3.5"/> <providerOption name="OptionInfer" value="true"/> <providerOption name="WarnAsError" value="false"/> </compiler> </compilers> </system.codedom> <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" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" 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> </configuration>
Moved our web application from W2003 & IIS6 to W2008 R2 & IIS7.5 . One of the first things we discovered was to set the Application Pool in "Classic" mode. However we are still not out of the woods. We are having a AjaxControlToolKit error. I have attached a screenshot but in summary, the first line of code referring to the AjaxControlToolKit is flagged in error, Type.registerNamespace('AjaxControlToolkit'); The Debugger throws the error text below: 'Type' is undefined Default.aspx?
I just downloaded the latest AjaxControlToolKit.dll (3.5.40412.0), and update it in my old project. When I compile the project, it shows sucessful. However, when I used my Customized Calendar, it got "AjaxControlToolKit Undefined"
ps: my old project is developed under AjaxControlToolKit.dll (3.0.20820.16598) . // README
When I turn on Code Coverage in my test settings, on a project that references the Unity DI container I get the following error:
Cannot initialize the ASP.NET project'{Project Name}'.
The event log specifies the following reason:
Could not load file or assembly 'Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. Strong name signature could not be verified.
I have downloaded Asp.Net Extension 1.0 and extract it.
Each AjaxControlToolkit.dll is keep in folder (ar,es,de,fr ... ) .There is also one AjaxControlToolkit.dll which is not inside any folder.
My question is which AjaxControlToolkit.dll should be used? I need to have all the AjaxControlToolkit.dll inside my bin folder? or I pick it according to my country? What if my web site is multilingual?
I am using MonoDevelop on MacOS and I am having difficulty getting AjaxControlToolkit's TabContainer visible on Google Chrome. I even set the visible property to true for both the TabContainer and TabPanels but it still did not work. Here is the source HTML:
I am using 'TextBoxWatermarkExtender'.code compiles fine but when i run the application, i get the following js error :
"AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. Ensure the correct version of the scripts are referenced. If you are using an ASP.NET ScriptManager, switch to the ToolkitScriptManager in AjaxControlToolkit.dll."
I have installed all necessary things, am i missing something.
The web service works - the code is copied practically verbatim from the AJAX Control Toolkit samples. This is really frustrating me. I have looked at other questions on here and not found a solution yet.
I don't get any errors or exceptions. Typing in the text box doesn't do anything, the web service doesn't hit the break point.
I have downloaded a project from the internet called the SMS Source example. I wanted to open this project in VS2010, so a conversion wizard has popped up prompting for the conversion. But it has errors in converting.
On the Timelog page, I want to put 2 dropdown list: 1 Manufacturing Project, 1 Engineer Project. However, users can choose either Manufacturing project dropdown or Engineer project dropdown (not both).
i m getting this error on my certain .aspx pages ,although i added tool kit in my project "Error4Type 'AjaxControlToolkit.ToolkitScriptManager' is not defined.C:UsersIramDocumentsVisual Studio 2008Projectsgfln1gfln1CreateNewConference.aspx.designer.vb3451gfln1
Iīm using in my application the control :ModalPopUpExtenter. In my computer testing localhost, it works fine. But when i put my application on my server, everything works fine except the ModalPopUp.In the page that i use it, my panel is appearing for my user, but i donīt receive any error message.I pute the dlls: AjaxControlToolkit.dll, System.Web.Extensions.dll and System.Web.Extensions.Design in the folder bin.
I'm sure this isn't specific to the AjaxControlToolKit, but it is what is causing me issues. I've created a basic user control that essentially wraps a textbox and MaskedEditExtender because it will often be used on different pages. The designer of the control looks fine, but when I include it in a page, I see a box for the MaskedEditExtender, which gets a bit annoying when designing. It looks like this in the designer:
Is there a way to hide this box in the designer, so my control just shows up as a text box?
I see that I have version 3.0.20229.0 of ajaxcontroltoolkit.dll on a server and on my local machine I have version 3.0.0.20820.0 of ajaxcontroltoolkit.dll in a AjaxControlToolkit-Framework3.5SP1 directory. So does 3.0.20229.0 correspond to 3.5 pre sp1?
I found the following at http://www.ajaxcontroltoolkit.com/Default.aspx:
This release includes over 10 patch fixes provided by members of the Toolkit community. We would like to specially thank all the patch contributors for their effort which helped make this release possible. We recognize their names on the
Toolkit Patch Hall of Fame.
Setting up the environment to use the Toolkit: This Toolkit release targets two different versions of the .NET Framework:
Version 3.5.20229 for .NET Framework 3.5 and Visual Studio 2008: Download the AjaxControlToolkit-Framework3.5.zip or AjaxControlToolkit-Framework3.5-NoSource.zip.
Version 1.0.20229 for ASP.NET AJAX version 1.0 and .NET Framework 2.0:
Download the AjaxControlToolkit.zip or AjaxControlToolkit-NoSource.zip.
Note: Toolkit version 3.5.20229 is only for users who are building on top of .NET Framework 3.5 using Visual Studio 2008. If you are using .NET Framework 2.0 and Visual Studio 2005 then you should use Toolkit version 1.0.20229.
It sounds like the Toolkit version does NOT correspond to the version of ajaxcontroltoolkit.dll.
I have two different version of AjaxControlToolkit dll and I have added reference of both dll in my web application. I also set up different tagprefix for both the version.
I am working on a page that primarily uses Telerik RadControls, and thus uses the RadScriptManager control. However, I need to add some controls that use AjaxControlToolkit to the page, but since I cannot have two ScriptManagers on one page, so how would I do this?
I am new to ajax. here's the problem I have. in my bin folder, I have so many different copies of AjaxControlToolkit.resources.dll in different languages.
I have 4 HTMLEditor controls from the AjaxControlToolkit on the same page. I love everything the control does except for how it handles the tab key. I want the user to be able to tab from one HTMLEditor to another instead of insert tabs into the content in the HTMLEditor. If possible I would want to be able to tab between HTMLEditors and other controls, but if the fix will only work between HTMLEditors I can make that work in this instance.
I have also tried both the SuppressTabInDesignMode and IgnoreTab and neither seems to do anything
EDIT: Here is some code that I am trying and is not working. I have tried a few combinations of the two tags mentioned above, but none of these examples ignores tab key presses. I redownloaded the ajaxcontroltoolkit to make sure it is up to date.