|
Rank: Newbie Groups: Member
Joined: 2/10/2017 Posts: 5
|
I have an ASP.Net VB application running on Windows Server 2019. I have a function which converts HTML reports to PDF using HtmlToPdf.ConvertUrl (last 2022 release). I works fine, but sometimes (I don't know why/when : temporary system overload, concurrent tasks, whatever...), the generated PDF contains an ASP error (returned by IIS), cause the ASP.Net crashes, probably because of missing parameters. I pass URL GET parameters to my ASP.Net page (my Session variables serialized in fact). When I call my page with the same URL parameters in another tab of my browser, the page displays fine ! So the error occurs in HtmlToPdf.ConvertUrl, but not every time !!!In the Windows Event Viewer, I regularly see this message : Quote:Could not load file or assembly 'EO.WebEngine' or one of its dependencies. The process cannot access the file because this file is in use by another process. (Exception from HRESULT: 0x80070020) Could this be related ? Any idea of what can be wrong if not ? Many thanks.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Hi, When you get an ASP error returned by IIS, what error do you get? Can try use a try catch block to catch and log the detailed error message like this:
Code: C#
try
{
HtmlToPdf.ConvertUrl(....);
}
catch (Exception e)
{
Log(e.ToString());
}
You can then let us know the detail about the exception that you logged. We can then go from there. Additionally, when you get the EO.WebEngine error in your Event Viewer, do you have additional information such as stack trace in your event viewer? Thanks!
|
|
Rank: Newbie Groups: Member
Joined: 2/10/2017 Posts: 5
|
Hi, Thanks for your answer :) eo_support wrote:When you get an ASP error returned by IIS, what error do you get? Can try use a try catch block to catch and log the detailed error message like this:
Code: C#
try
{
HtmlToPdf.ConvertUrl(....);
}
catch (Exception e)
{
Log(e.ToString());
}
You can then let us know the detail about the exception that you logged. We can then go from there. I already have a try/catch there, and it tells me that the conversion is done successfully (I have a PDF file created). However, in fact, I think this error does not appear during this step ( ConvertUrl) See my next post with Event Viewer details...
|
|
Rank: Newbie Groups: Member
Joined: 2/10/2017 Posts: 5
|
eo_support wrote:Additionally, when you get the EO.WebEngine error in your Event Viewer, do you have additional information such as stack trace in your event viewer?
Here is my full stack trace :
Code: XML
Avertissement 27/10/2022 10:05:09 ASP.NET 4.0.30319.0 1310 Web Event "Event code: 3008
Event message: A configuration error has occurred.
Event time: 27/10/2022 10:05:09
Event time (UTC): 27/10/2022 08:05:09
Event ID: c3046bd85fd14ab08cf6e0d9427bb870
Event sequence: 2
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/2/ROOT-55-133113315094605261
Trust level: Full
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\***\
Machine name: NS2****90
Process information:
Process ID: 1784
Process name: w3wp.exe
Account name: MyServer\MyUser
Exception information:
Exception type: ConfigurationErrorsException
Exception message: Impossible de charger le fichier ou l'assembly 'EO.WebEngine' ou une de ses dépendances. Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus. (Exception de HRESULT : 0x80070020)
à System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
à System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()
à System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)
à System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
à System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()
à System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded)
à System.Web.Compilation.BuildManager.ExecutePreAppStart()
à System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Impossible de charger le fichier ou l'assembly 'EO.WebEngine' ou une de ses dépendances. Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre processus. (Exception de HRESULT : 0x80070020)
à System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
à System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
à System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)
à System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
à System.Reflection.Assembly.Load(String assemblyString)
à System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
Request information:
Request URL: http://my.domain.fr/index.aspx?ReturnUrl=/
Request path: /index.aspx
User host address: 92.182.23.209
User:
Is authenticated: False
Authentication Type:
Thread account name: MyServer\MyUser
Thread information:
Thread ID: 65
Thread account name: MyServer\MyUser
Is impersonating: False
Stack trace: à System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)
à System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()
à System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)
à System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)
à System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()
à System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded)
à System.Web.Compilation.BuildManager.ExecutePreAppStart()
à System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
The Request URL ( http://my.domain.fr/index.aspx?ReturnUrl=/ ) is NOT the URL I call in HtmlToPdf.ConvertUrl() ! Perhaps that's an IIS/ASP.Net related behaviour (a kind of DLL checking before parsing pages ??) ? Because in index.aspx, I don't call any EO.PDF functions :-/ Thank you for you precious help
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Hi,
This appears to be some third party application locking the file. Both IIS and our code would read from this file but the read is not exclusive so the file is never locked for read, thus even when IIS or our code is reading this file, other process can still read this file. The error you are receiving indicates that there is another process that is holding on a lock on this file at the moment thus IIS is unable to read it. So you must find out who locked that file and stop that application from doing so. The most common "suspect" of such applications are AntiVirus application that scans the file. So that might be something you want to look into first.
Thanks!
|
|
Rank: Newbie Groups: Member
Joined: 2/10/2017 Posts: 5
|
Hi,
Thank you for this answer. I understand the principle, I will follow this lead to check if something else can lock this DLL.
However, that's still strange, my server is a freshly installed Windows Server 2019 with only SQL Server...
By the way, the error I had sometimes in my PDF was due to URL parameters not correctly taken into account (but it was working on the previous server, whereas, it shouldn't had...).
So I managed to solve my issue, finally not really related to EO.PDF (but I suspected the component to sometimes read Session variables, in some particular conditions (?), whereas it can not do this, right ?)
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Hi,
ConvertUrl does not read your session variables. Session variable is a concept/feature of your web server (in your case IIS + ASP.NET). The only way ConvertUrl interacts with your web server is to send the Url to your server and your server sends back a response. In another word, your web server is a black box to ConvertUrl. It does not get into any details such as session variables inside your web server.
Thanks!
|
|