.NET application fails to run from Network Share and RDP Shell - winforms

I'm trying to run my .NET application, that resides in a network share from our domain, using a RDP Client.
When starting a "full" RDP session (that is, opening the whole desktop) and then running my application from the .exe file, everything works fine.
But when I set this same .exe as the Startup Application Path from the RDP Client , I get the following error:
(PS: I clipped the stack trace to the calls I found myself more important)
System.TypeInitializationException: The type initializer for 'NHibernate.Cfg.Environment' threw an exception. ---> System.ArgumentException: Incorrect Parameter. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))
at System.Security.Policy.PEFileEvidenceFactory.GetLocationEvidence(SafePEFileHandle peFile, SecurityZone& zone, StringHandleOnStack retUrl)
(...)
at System.AppDomain.get_Evidence()
(...)
at System.Configuration.ConfigurationManager.GetSection(String sectionName)
at NHibernate.Cfg.Environment.LoadGlobalPropertiesFromAppConfig() in p:\nhibernate-core\src\NHibernate\Cfg\Environment.cs:line 212
at NHibernate.Cfg.Environment..cctor() in p:\nhibernate-core\src\NHibernate\Cfg\Environment.cs:line 198
As I work with shadow-copied files, I set a new AppDomain when the application has just begun (the .exe entry point):
<STAThread()>
Public Sub Main()
Try
Dim currentDirectory As DirectoryInfo = New DirectoryInfo(Directory.GetCurrentDirectory)
Dim runtimeDirectory As DirectoryInfo = New FileInfo(Assembly.GetExecutingAssembly.Location).Directory
Dim appDomainStartupSetup As New AppDomainSetup
appDomainStartupSetup.ApplicationBase = currentDirectory.FullName
appDomainStartupSetup.ShadowCopyFiles = "true"
Dim appDomainStartup As AppDomain = AppDomain.CreateDomain("StartupAppDomain", Nothing, appDomainStartupSetup)
Dim entrypointLoader As LoadBaseFiles = appDomainStartup.CreateInstanceFromAndUnwrap(Assembly.GetExecutingAssembly.CodeBase, "MyClass.LoadBaseFiles")
entrypointLoader.RuntimeDir = runtimeDirectory.FullName ' Setup the 'entry-point' object
entrypointLoader.StartupEntryPoint() ' Starts the Application
Catch ex As Exception
' Error Handling Here
End Try
End Sub
Public Class LoadBaseFiles
Inherits MarshalByRefObject
' Startup stuff here...
End Class
More Info
Content of my ApplicationEntryPoint.exe.config file;
I had set the CAS Policy to Full Machine Trust, but I'm not sure this still applies to .NET 4.0;
The Remote Desktop (Terminal Services) Server runs Windows Server 2003;
EDIT:
If I copy all the assemblies to a local drive (C:) and run my application from there, it will work fine.
Any advices?

It looks like you're missing an argument or pointing to an unavailable resource.
a) Is the Working Directory set for the application?
b) Is the Working Directory available to the user on login?

Related

Serilog - Unable to open file - File used by another process Error

I'm using serilog in a .NetCore 3.1 application.
loggerFactory.AddSerilog();
Log.Logger = new LoggerConfiguration().MinimumLevel.Information()
.WriteTo.File("test-{Date}.txt").CreateLogger();
app.UseSerilogRequestLogging();
When i run a application and try to access file, i'm getting error saying
"File cannot be opened because it is being used by another process"
Am i missing any setting to be added?
Update:
Even after adding shared:true - Did not work.
Log.Logger = new LoggerConfiguration().MinimumLevel.Information()
.WriteTo.Async( o => o.File("test1.txt", shared: true)).CreateLogger();

Is this a good way to reference Thinktecture DLLs from a strongly-named .NET DLL?

PROBLEM:
I am trying to help a co-worker who wants to reference Thinktecture.IdentityModel.Client.Net45.dll from a VB.NET DLL –- call it MyVBNet.dll -- that is strongly-named. When we run an executable that references MyVBNet.dll, MyVBNet.dll’s attempt to instantiate a Thinktecture object results in the following exception:
FileLoadException was unhandled by user code
An exception of type 'System.IO.FileLoadException' occurred in MyVBNet.dll but was not handled in user code
Additional information: Could not load file or assembly 'Thinktecture.IdentityModel.Client.Net45, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. A strongly-named assembly is required. (Exception from HRESULT: 0x80131044)
Here is code that I added to the constructor of an object in MyVBNet.dll to reproduce the exception above:
Dim lobjURI = New Uri("http://localhost:4200/")
Dim lobjOAuth2Client = New Thinktecture.IdentityModel.Client.OAuth2Client(lobjURI)
POTENTIAL WORKAROUND:
I tried to work around the problem as follows and afterward was able to instantiate a Thinktecture OAuth2Client object in MyVBNet.dll on a Windows 10 computer. However, I do not know whether this is a good approach.
[1] Find a Developer Command Prompt in the Start menu and do "[right click] > Run as administrator" on it.
[2] In the resulting window, if you do not already have a SNK file with a strong name key, key in something similar to the following to create an SNK file, keyPair2.snk in the example:
sn -k keyPair2.snk
[3] Copy a Thinktecture DLL to a directory, cd the Developer Command Prompt window to that directory, and key in the following, where Thinktecture.IdentityServer3.dll is an example of a Thinktecture DLL:
ildasm Thinktecture.IdentityServer3.dll /output:Thinktecture.IdentityServer3.il
move Thinktecture.IdentityServer3.dll Thinktecture.IdentityServer3.dll_Original
ilasm Thinktecture.IdentityServer3.il /dll /res:Thinktecture.IdentityServer3.res /key=keyPair2.snk
gacutil /i Thinktecture.IdentityServer3.dll
[4] In Visual Studio, remove your current references to Thinktecture DLLs and replace them by doing "[right click] > Add Reference... > Browse..." on the References node in the Solution Explorer for the assembly to which you wish to add a reference. Then select the DLL that you want under C:\Windows\Microsoft.NET\assembly\GAC_MSIL.

SSIS 2012: Metadata out of sync after add/remove script parameter

We have deployed several changes to SSIS packages successfully, but this particular change gives us an error of
The component metedata is out of sync with the compiled script. Recompile the script using the Script Component Editor.
It runs fine in the debugger on my jump host. What do I do to "recompile the script"? Or is there a deeper problem?
UPDATE 1: This particular script component is more like a destination, and asynchronous. It accepts input rows, and all (or most) of them are consumed within the script (it updates external data via a Web Service), and only the error cases continue through to the output.
I have narrowed down the problem to the absolute minimum change that gives this error: adding another input column (or remove an unused input column). To be precise, after opening the package in Visual Studio 2012 on my jump host, double-click the Perform ETL task to open the Data Flow, then double-click the G9 Web Service Script Component.
I switch to Input Columns - there are 16 ticked/listed - and I untick one that is actually not used in the script. Or I tick (add) another column (which I want to use in the script).
Then I swap back to Script, click on Edit Script, and wait for the VstaProjects window to come up.
I either close this VstaProjects window straight away, or I make an extremely minor change to the script (comment only), then Build > Build ScriptComponent_5aa...acb, then press the floppy (Save) symbol, then exit Vsta.
Then I run in the debugger (press green start arrow) and it runs as expected. I build by right-clicking the project (G9) and selecting Build (this might be redundant after running in debugger).
In Windows (File) Explorer, I navigate to the G9/bin/Development folder, double-click G9.ispac (steps through deploy: Project Development file; my-dev-svr; SSISDB > ACME-SSIS (which gives SSISDB/ACME-SSIS/G9); Deploy!
Problem: When I log into my-dev-svr, drill into Integration Services Catalogs, and run the package, then drill into the Overview Report (for this execution) > View Messages, I see several errors. The most important are
Perform ETL:Error: "G9 Web Service Script Component" failed validation and returned validation status "VS_ISBROKEN".
Perform ETL:Error: The component metedata is out of sync with the compiled script. Recompile the script using the Script Component Editor.
Command Line
I'm not entirely convinced this is related, but here it is: I've copied G9.ispac to my-dev-svr, then logged in there and on the command-line, executed dtexec. Bear in mind that this is the same server where SSIS debugging does not work.
D:\ACME\Deploy\SSIS>dtexec /Project G9.ispac /Package ACMEPortal_ProjectProperties_G9.dtsx
Microsoft (R) SQL Server Execute Package Utility
Version 11.0.6020.0 for 64-bit
Copyright (C) Microsoft Corporation. All rights reserved.
Started: 10:51:21 PM
Warning: 2017-04-17 22:51:21.74
Code: 0xC0016016
Source: SSIS:Property
Description: Failed to decrypt an encrypted XML node. Verify that the project was created by the same user. Project load will attempt to continue without the encrypted information.
End Warning
Warning: 2017-04-17 22:51:21.74
Code: 0x800190FF
Source:
Description: Failed to decrypt sensitive data in project with a user key. You may not be the user who encrypted this project, or you are not using the same machine that was used to save the project. If the sensitive data is a parameter value, the value may be required to run the package on the Integration Services server.
End Warning
Progress: 2017-04-17 22:51:25.61
Source: Get ETL Configuration
Executing query "etl_GetGenericETLConfigForACME".: 100% complete
End Progress
Progress: 2017-04-17 22:51:25.64
Source: Get G9 Web Service Connection Config Details
Executing query "etl_GetG9WSConfigSettings".: 100% complete
End Progress
Progress: 2017-04-17 22:51:25.65
Source: Audit ETL Initiation
Executing query "dbo.etl_AuditInitiation".: 100% complete
End Progress
Warning: 2017-04-17 22:51:25.68
Code: 0x80019002
Source: OnError
Description: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (6) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
End Warning
Error: 2017-04-17 22:51:25.68
Code: 0xC0010026
Source: Set Propogate Error to False
Description: The task has failed to load. The contact information for this task is "".
End Error
Error: 2017-04-17 22:51:25.71
Code: 0xC0024107
Source: Set Propogate Error to False
Description: There were errors during task validation.
End Error
Error: 2017-04-17 22:51:25.71
Code: 0xC0010026
Source: Set FilenamePart and Error Variables
Description: The task has failed to load. The contact information for this task is "".
End Error
Warning: 2017-04-17 22:51:25.72
Code: 0x80019002
Source: OnError
Description: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (10) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
End Warning
Error: 2017-04-17 22:51:25.72
Code: 0xC0010026
Source: Set Propogate Error to False
Description: The task has failed to load. The contact information for this task is "".
End Error
Error: 2017-04-17 22:51:25.73
Code: 0xC0024107
Source: Set Propogate Error to False
Description: There were errors during task validation.
End Error
Error: 2017-04-17 22:51:25.73
Code: 0xC0024107
Source: Set FilenamePart and Error Variables
Description: There were errors during task validation.
End Error
Warning: 2017-04-17 22:51:25.74
Code: 0x80019002
Source: ACMEPortal_ProjectProperties_G9
Description: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (8) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
End Warning
DTExec: The package execution returned DTSER_FAILURE (1).
Started: 10:51:21 PM
Finished: 10:51:25 PM
Elapsed: 4.344 seconds
UPDATE 2: An excerpt from the Script Component.
' Microsoft SQL Server Integration Services user script component
' This is your new script component in Microsoft Visual Basic .NET
' ScriptMain is the entrypoint class for script components
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports ScriptComponentTaskUtility.ACME_ETLDataFlowScriptComponentTasks '-- custom toolkit
Imports ScriptComponentTaskUtility
Imports Microsoft.SqlServer.Dts
Imports System.Windows.Forms
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _
<CLSCompliant(False)> _
Public Class ScriptMain
Inherits UserComponent
Private _updateLimit As Integer
Private _rowCount As Integer
Public Overrides Sub PreExecute()
MyBase.PreExecute()
'
' Our application code follows
_updateLimit = 2 '-- Intending to replace this hard-coding
_rowCount = 0
End Sub
Public Overrides Sub G9ProjectInput_ProcessInputRow(ByVal Row As G9ProjectInputBuffer)
Try
' We limit the updated records to X per run (X = 2, but want to make configurable).
' Next ETL run will pick up next X
_rowCount += 1
If (_updateLimit > 0 And _rowCount > _updateLimit) Then Exit Sub
Dim taskComponent As G9Project = New G9Project(Me.UserID, Me.Password, Me.Config, Me.WSURL)
Dim readResponse As Project_DoReadResponse
''MessageBox.Show(Me.WSURL)
readResponse = taskComponent.ReadProject(Row.g9ProjectNumber, Row.Planet)
If (readResponse.Errors.Items.Length > 0) Then
CreateErrorRows(Row, readResponse.Errors.Items(0).ShortDescription)
Exit Sub
End If
Dim g9Project As Project = readResponse.Project
'**********************************
'Change the property values here
Try
' Who's in charge? The Manager or Owner?
If Not (Row.acmeInChargeCode_IsNull) Then
g9Project.SelectionCodes(10).Value = Row.acmeInChargeCode.ToString
End If
' ... other fields
Catch ex As Exception
Row.ErrorColumnName = "Web Service Error"
CreateErrorRows(Row, ex.Message)
Exit Sub
End Try
'End of change of property values
'**********************************
Dim updateResponse As ResponseBase
updateResponse = taskComponent.UpdateProject(g9Project)
If (updateResponse.Errors.Items.Length > 0) Then
CreateErrorRows(Row, updateResponse.Errors.Items(0).ShortDescription)
Exit Sub
End If
Catch ex As Exception
CreateErrorRows(Row, ex.Message)
Exit Sub
End Try
End Sub
' #Region ************************ NOTE: Copy & paste following code block *********************
' contains private member variables, etc, including CreateErrorRows()
End Class
It was necessary to record all the details/configuration/code of the Script Component, then to delete it and recreate it afresh. Then join up the flows again (for the input and output).
In this case, the script is a Transformation script, but in moral terms, it is a destination; only error cases come through to the output.
There was a second Script Component that also had to change as part of the same bug fix. Adding extra columns for input triggered the error there as well, so it was also necessary to do the same delete-and-recreate on this. It was also a Transformation script, but this is fully synchronous (every input row come through to output, with some read-write input columns changed, and some other read-only input columns copied/filtered to additional output columns).
It's important to note (prior to the delete-and-recreate), that I could always run it in the Visual Studio 2012 debugger on my jump host, but the "out of sync" error occurred after I had deployed the G9.ispac file to my-dev-svr (and running either via SSMS > Integration Services Catalog > ... package, or by SQL Server Agent > Job Activity Monitor > job).
An additional observation, that after the delete-and-recreate, I can now freely add and delete input columns to the script - the very activity that caused the error prior. After doing the input column changes, it is enough to press Edit Script..., wait for the VstaProjects window to appear, close it immediately, press OK on the Script Transformation Editor dialog, and verify that a red X does not appear.
I guess it's the SSIS equivalent of "Have you turned it off and turned it on again?"
Since you have already work out the script and make sure the script works fine. Then it has a lot chance it has issues in your destination. It seems that you are using the Script component as data source, try to check the Metadata from the output of the source (right click the precedence constraint), check them whether they are matched with the input of destination, more important, if you have made any changes to the source columns, you'd better to delete and create a new destination, sometimes it might cache the columns that no longer exists.

I have modified one dotnetnuke website and uploaded it on new server (Host-gator) from my local development server it gives me the error

When I am trying to access site in browser it gives me following error:
'Framework' is not declared. It may be inaccessible due to its protection level.
Private Shared Sub CreateProvider()
' [alex - 09/01/09] removed object assembly name (required for WPA projects)
objProvider = CType(Framework.Reflection.CreateObject("data", "DotNetNuke.Modules.Links", ""), DataProvider)
End Sub
Source File: D:\InetPub\vhosts\coolsimsoftware.com\httpdocs\App_Code\Links\DataProvider.vb Line: 53
How can I get rid of the error?

Upgraded to Silverlight 4 cause System.Security.SecurityException

Trying to open a file dialog but I get an exception when calling ShowDialog. This pice of code have always worked fine but I think when I upgrade to Silverlight 4 it caused some problem.
Code:
var dlg = new OpenFileDialog { Filter = "CSV Files (*.csv)|*.csv" };
if (dlg.ShowDialog() == true)
{
Upload(dlg.File);
}
Exception:
Directory = 'dlg.File.Directory' threw an exception of type 'System.Security.SecurityException'
{System.Security.SecurityException: File operation not permitted. Access to path file.csv' is denied.
at System.IO.FileSecurityState.EnsureState()
at System.IO.FileInfo.get_DirectoryName()
at System.IO.FileInfo.get_Directory()
}
It seems like it´s problem to get options for the directory because I got correct filename and file size but no information about the directory and directory name.
If you are trying to debug the application then you will get this security exception. Try to run without debugging and check if you are still getting this error.

Resources