We are migrating an existing application to run under ASP.NET Core MVC. We want to use the Upload feature, but the assembly we currently use, Infragistics45.Web.jQuery.v16.2, only works when the IIS App Pool using .NET CLR Version v4.0. .NET Core requires that the App Pool be set to "No Managed Code". We've tried using the new Upload Middleware we've found described on various Infragistics websites but can't seem to get any of them to work. We are running the .NET Core with the full 4.6.2 Framework due to functionality we need that is not available in the .NET Core Standard.
Can anyone provide a detailed example of both configuration, server-side and client-side code examples, to help us achieve what we need to do. We want to continue using the client-side igniteUI JQuery to perform the Uploads, but we need the server-side to run under .Net Core using the full 4.6.2 Framework.
Hello,
Thank you for contacting Infragistics!
The dll you are using is specifically for ASP.NET and not MVC so you wouldn’t want to use that any more. Instead you would use the jQuery/Ignite UI version of the control which uses JavaScript for most of its functionality. For using the igUpload in JavaScript/MVC please see the following documentation and samples:
https://www.igniteui.com/help/igupload-using-http-handler-and-modules
https://www.igniteui.com/help/igupload-using-server-side-events
https://www.igniteui.com/file-upload/aspnet-mvc-helper
https://www.igniteui.com/file-upload/upload-progress-manager
To use ASP.NET Core MVC you would have to get the correct NuGet package, as .Net Core only supports 3rd party references through NuGet packages. You can see the following on getting NuGet packages setup:https://www.igniteui.com/help/using-ignite-ui-nuget-packages
We implemented what is described in the pages 'igupload-using-http-handler-and-modules' and 'using-ignite-ui-nugget-packages'. Since we already have the upload code working on the client-side, we did not implement any of the server-side code described by the other web pages.
Unfortunately, after issuing the igUpload command at the client, the calls to the server fail with 404 errors. We've used the same client-side code with the ASP.NET version of the server-side dll and everything works fine.
The following is what we have in the web.config.
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
<add name="IGUploadModule" type="Infragistics.Web.Mvc.UploadModule" preCondition="managedHandler" />
</modules>
<handlers>
<remove name="WebDAV" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
<add name="IGUploadStatusHandler" path="IGUploadStatusHandler.ashx" verb="*" type="Infragistics.Web.Mvc.UploadStatusHandler" preCondition="integratedMode" />
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"></aspNetCore>
<security>
<requestFiltering>
<!--OPTIONAL: Set the maximum request length. By default the request lenght is ~30 MB. More info: http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits-->
<requestLimits maxAllowedContentLength="2097151000" />
</requestFiltering>
</security>
<customHeaders>
<add name="X-Frame-Options" value="ALLOW-FROM http://www.microsoft.com" />
<add name="X-Frame-Options" value="ALLOW-FROM http://www.google.com" />
</customHeaders>
</httpProtocol>-->
</system.webserver>
Our Dependencies include both NuGet packages IgniteUI and IgniteUI.MVC (version 16.2.20162.2040 for both).
The client-side script to perform the upload is as follows:
$("#ATigUpload1").igUpload({
mode: 'multiple',
multipleFiles: true,
autostartupload: true,
progressUrl: "/IGUploadStatusHandler.ashx",
uploadUrl: "/ig_fua34sf345sdf13sdf3454erdsf2345asd3425df5235d54df345.aspx",
maxSimultaneousFilesUploads: 2,
controlId: "serverID1",
fileUploading: function (evt, ui) { ... },
fileUploaded: function (evt, ui) { ... },
fileSelected: function (evt, ui) { ... },
fileSelecting: function (evt, ui) { ... },
onError: function (evt, ui) { ... },
fileUploadAborted: function (evt, ui) { ... }
});
Well, I'm a little confused. I specially wrote the issue indicating we a trying to use .net core and the initial response listed several links to explain how to do it, one being the following:
The NuGet package mentioned in the link above point to a 4.6.2 version.
We are currently running .net core using the full 4.6.2 .net framework. In fact, we actually have the Infravististics version (16.1) of the upload code for asp.net working with our .NET CORE MVC application, but we wanted to use the MVC version of code available with 16.2.
I'm confused because Mike sent links describing how to do what we want, they just don't seem to get us where we need to be, unless he misunderstood and sent the wrong links to start with.
By the way, we've also tried doing it the way described in the link you sent, but it fails to work. I think it is because the NuGet package only works with .net core 1.0 framework, where we really do need one that will work with the full framework, even though it is running in a .net core environment.
Hi,
Thank you for the update. I had missed the link that Mike H. sent. I sent the other links as an example of setting up NuGet not the specific NuGet package you would have to get. I have some follow up questions concerning this matter.
If you are in a .Net core environment why are you trying to use the full framework?Why can you not instead work in an environment with the full framework? Or use the .Net core framework in the .Net core environemnet?
There are many aspects of the .net core environment in Visual Studio which we like. However, the .net core framework is missing a lot of functionality we need (we just converted over to an MVC app and needed to port over all functionality from the other application). We cannot use the .net core framework without major changes to our application.
We like the idea of using the Middleware, but it appears that Infragistics only supports them when using the .net core framework. We are using a lot of other Middleware with not problems.
The version of the Infragistics controls you will use will want to be matched to the version of .Net you are using for the project. If you are creating a .Net Core project you will want to use the .net core version of our assembly. If you are creating a regular .net project you would use the regular assembly for out controls.
We've already gotten NuGet packages IgniteUI and Ignite.MVC working with our new MVC application. They require us to run the web site with a pool configured for .NET CLR v4.0 rather than No Managed Code, as is typical for a .NET Core MVC application. These are the only NuGet packages we have as a dependency that forces the pool to be configured this way. We are using Middleware to perform several other tasks.
We were hoping to use the Middleware documented for Infragistics Uploads as well using NuGet package Infragistics.Web.MVC, however, we were never able to get it to work. A sample solution to perform Uploads using the Infragistics.Web.MVC package would be greatly appreciated.
Thank you for the update. Can you tell me more about your setup? What is your OS? What browser are you using? What version of the browser? Do you have a full network log of the traffic when that error occurs that you can attach?
I also found the following post which suggests the handler is not returning anything. I read the other post and changing the timeout didn't appear to fix the other persons problem. The file is getting uploaded (although with a 504 response). But the handler isn't returning what is expected.
http://www.telerik.com/forums/fiddler-readresponse()-failed-the-server-did-not-return-a-response-for-this-request-server-returned-0-bytes
We did get the ASP.NET code that supports an Upload to work with our app (even though we are running in a .net core environment, meaning we are using Kestrel). The call to the handler works fine in this case.
It is unclear why everything is working fine in your setup but not ours when using the MiddleWare. I would think it should be straightforward to configure and use, but that doesn't appear to be the case for us.
Thank you for the update. If you are getting the moderation message it is likely that you are posting many times in a short period of time so the system thought your post were spam. In the future it would be better to post all your updates in one response/post. Concerning the 594 error I have done some looking into and it appears it may be a timeout issue try increasing your timeout:
https://forums.asp.net/t/2081506.aspx?+Fiddler+ReadResponse+failed+The+server+did+not+return+a+complete+response+for+this+request+Server+returned+0+bytes+for+an+asp+net+application+
You may get several posts from me. Once I do a post I keep getting the message that the forum is managed and that my posts must first be approved. Other times it gets added automatically.
However, running the solution as sent also returns the 504 error.
I initially ran with the handler omitted from the published project and got the same 504 errors. So I put it in and it got the same error. Didn't seem to make any different one way or another.
I've been unable to get the app to run in IISExpress through VS 2017. It fails trying to find the web.config. It keeps trying to find it in c:\Users\mpeterson\Downloads\UploadTest\UploadTest\UploadTest. I can't find a reference to that anywhere, but I assume that is where you placed it for testing.
I can only run by publishing locally.