Re: Appdomain.CreateDomain throws SecurityException

From: Praisy (Praisy_at_discussions.microsoft.com)
Date: 06/20/05


Date: Mon, 20 Jun 2005 04:47:01 -0700

Let me explain my problem more clearly.
I have a set of dlls which read from a config file. When I reference these
dlls in any application, I need to provide a config file with the values
required by the dlls I reference. Now, I want to perform a set of operations
using the above said dlls in a managed stored procedure. since I cannot
provide a config file in managed stored proceudre, I did the follwoing.

1. Created an exe which references the set of dlls and which provides a
config file for the same.
2. In the managed stored procedure, I create an appdomain and execute the
assembly in the appdomain created.

Is it possible to create appdomains in the managed stored procedure?
As I have explained my problem above, is there any other way to do this?
Your help is highly appreciated.
Thanks in advance,

"Nicole Calinoiu" wrote:

> Even if you could get past this exception, you would block on the next line
> since the SQL CLR host blocks the necessary call. Might it be possible to
> alter your target assembly so that the call can be made as a simple method
> invocation?
>
>
>
> "Praisy" <Praisy@discussions.microsoft.com> wrote in message
> news:107A2752-4FDE-43B5-86D2-3506052BB057@microsoft.com...
> > Hi Nicole,
> > Follwoing is the code that generates this exception
> >
> > public static void SPInsertTest()
> > {
> > AppDomainSetup ads = new AppDomainSetup();
> > ads.ApplicationBase = @"C:\SPTestExe";
> > ads.ConfigurationFile = @"C:\SPTestExe\TestAppExe.exe.config";
> > AppDomain ad = AppDomain.CreateDomain("TestApp", null, ads);
> > ad.ExecuteAssembly(@"c:\SPTestExe\TestAppExe.exe");
> > }
> >
> > "Nicole Calinoiu" wrote:
> >
> >> What is the code for the version of SPInsertTest that generates this
> >> exception?
> >>
> >>
> >> "Praisy" <Praisy@discussions.microsoft.com> wrote in message
> >> news:F83105AF-E82B-481B-A231-5E1948545CCF@microsoft.com...
> >> > Hi!
> >> > Thanks for the info. While creating the assembly in SQLServer 2005, I
> >> > had
> >> > set the PERMISSION_SET to EXTERNAL_ACCESS during which I got the
> >> > security
> >> > Exception. Now I changed to UNSAFE and got the TypeLoadException as
> >> > follows.
> >> >
> >> > System.TypeLoadException: The domain manager specified by the host
> >> > could
> >> > not
> >> > be instantiated.
> >> > at System.AppDomain.nCreateDomain(String friendlyName, AppDomainSetup
> >> > setup, Evidence providedSecurityInfo, Evidence creatorsSecurityInfo,
> >> > IntPtr
> >> > parentSecurityDescriptor)
> >> > at System.AppDomainManager.CreateDomainHelper(String friendlyName,
> >> > Evidence securityInfo, AppDomainSetup appDomainInfo)
> >> > at System.AppDomainManager.CreateDomain(String friendlyName, Evidence
> >> > securityInfo, AppDomainSetup appDomainInfo)
> >> > at System.AppDomain.CreateDomain(String friendlyName, Evidence
> >> > securityInfo, AppDomainSetup info)
> >> > at StoredProcedures.SPInsertTest()
> >> >
> >> > Any idea what can be the reason??
> >> > Thanks,
> >> >
> >> >
> >> > "Nicole Calinoiu" wrote:
> >> >
> >> >> SQL Server 2005 imposes additional permission restrictions on managed
> >> >> code
> >> >> that it hosts. For an introduction to this topic, take a look at the
> >> >> "CLR
> >> >> Integration Security" topic in the BOL.
> >> >>
> >> >>
> >> >> "Praisy" <Praisy@discussions.microsoft.com> wrote in message
> >> >> news:42EA4E5E-0B83-4EF3-9E0C-A74CA51A1BB0@microsoft.com...
> >> >> > Hi,
> >> >> > The following exception occured when I tried to create an appdomain.
> >> >> > "System.Security.SecurityException: Request for the permission of
> >> >> > type
> >> >> > 'System.Security.Permissions.SecurityPermission, mscorlib,
> >> >> > Version=2.0.0.0,
> >> >> > Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
> >> >> > at System.AppDomain.CreateDomain(String friendlyName, Evidence
> >> >> > securityInfo, AppDomainSetup info)
> >> >> > at StoredProcedures.SPInsertTest()
> >> >> > The action that failed was:
> >> >> > Demand
> >> >> > The type of the first permission that failed was:
> >> >> > System.Security.Permissions.SecurityPermission
> >> >> > The Zone of the assembly that failed was:
> >> >> > MyComputer "
> >> >> >
> >> >> > Let me explain what I have done.
> >> >> >
> >> >> > 1.I've created a class library by name TestApp which has a config
> >> >> > file.
> >> >> > I
> >> >> > have method called Readconfig which reads from the config and puts
> >> >> > the
> >> >> > value
> >> >> > in the file in some location. the readconfig method is called in the
> >> >> > constructor of this class.
> >> >> >
> >> >> > 2. I've created an exe which refers the above calss libray and
> >> >> > creates
> >> >> > the
> >> >> > object of the class present in it.
> >> >> >
> >> >> > 3. I've created a Managed stored procedure using the
> >> >> > SQLServerProject
> >> >> > in
> >> >> > the
> >> >> > whidbey. The stored procedure has the following code.
> >> >> >
> >> >> >
> >> >> > AppDomainSetup ads = new AppDomainSetup();
> >> >> > ads.ApplicationBase = @"C:\SPTestExe";
> >> >> > ads.ConfigurationFile =
> >> >> > @"C:\SPTestExe\TestAppExe.exe.config";
> >> >> >
> >> >> > //AppDomain ad = AppDomain.CreateDomain("TestApp", null,
> >> >> > ads);
> >> >> > AppDomain ad = AppDomain.CurrentDomain;
> >> >> > ad.ExecuteAssembly(@"c:\SPTestExe\TestAppExe.exe");
> >> >> >
> >> >> > when I install this stored procedure in yukon and run it, I get the
> >> >> > above
> >> >> > mentioned exception.
> >> >> >
> >> >> > Not able to trace out the reason. Can anyone tel me what the problem
> >> >> > is??
> >> >> >
> >> >> > Thanks,
> >> >>
> >> >>
> >> >>
> >>
> >>
> >>
>
>
>



Relevant Pages

  • about locating assemblies
    ... The application uses dlls made in c++/c, which have been wrapped for using ... look into the concerned subfolder and therefore, ... the application folder, and yes, this time the exception was not raised. ... It would help if you could post parts of the config file that are ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Helpful Blogs or Other NGs?
    ... will reference the right DLLs for you. ... a reference to System.Data.SqlServerCe. ... Ginny Caughey ... I'm not the RDA expert around here I'm ...
    (microsoft.public.sqlserver.ce)
  • Re: Helpful Blogs or Other NGs?
    ... the CF 1.1 project DLLs and possibly it requires CF 2.0? ... dialog to add a reference to System.Data.SqlServerCe. ... Ginny Caughey ... I'm not the RDA expert around here ...
    (microsoft.public.sqlserver.ce)
  • Re: VS.NET Public Namespaces, classes, Function - Conceptual misunderstanding.
    ... having to locate and reference them. ... would have the canonical list of namespaces and classes when you opened ... Company specific DLLs, well if you're going to build libraries then put ... Provided you're using a decent source control system, ...
    (microsoft.public.dotnet.framework.aspnet)
  • Re: Best practice on VS project layout regarding DLL references
    ... the using clause and I could reference the classes. ...     I am not sure why you are not including the appropriate projects in the ... sign all of your DLLs, so I'm not sure what you mean by the question. ... enough to just "sign" the top level DLLs I also must sign all ...
    (microsoft.public.dotnet.languages.csharp)

Loading