using <runtime> section in web.config file

S

Subra Mallampalli

Hi,

I am trying to use <runtime> section within the web.config file. However,
the contents of the <runtime> section seem to be ignored. What am i missing
here? Is <runtime> section not used by web apps?

Any help is greatly appreciated.

Thanks,

Subra
 
S

Subra Mallampalli

No. <runtime> section is used to specify the binding policies for the .NET
run time.
For example:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="myBinFolder"/>
<dependentAssembly>
<assemblyIdentity name="myAssemblyName" />
<codeBase href="myBinFolder2"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Basically, I am looking for a mechanism to not use the standard bin folder
for my web apps but instead use a common folder to store common dlls for a
group of web apps w/o using the GAC.

Thanks,

Subra
 
J

Juan T. Llibre

re:
"No. <runtime> section is used to specify..."

Hi, Subra.

It looks like <codebase href=" needs a web address :

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="myAssembly"
publicKeyToken="32ab4ba45e0a69a1"
culture="neutral" />
<codeBase version="2.0.0.0"
href="http://www.litwareinc.com/myAssembly.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

See
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfCodeBase.asp



Juan T. Llibre
ASP.NET MVP
===========
 
B

bruce barker

no its not.

this is probably because the dll's are needed for the page compile first.
the compiler references are specified in the <assemblies> section (which
asp.net passes to the compiler thru switches when it spawns it).
unfortunately you can only specify the name in the <assemblies> section, not
the path, as this is specified with the compiler lib switch.

-- bruce (sqlwork.com)


message | Hi,
|
| I am trying to use <runtime> section within the web.config file. However,
| the contents of the <runtime> section seem to be ignored. What am i
missing
| here? Is <runtime> section not used by web apps?
|
| Any help is greatly appreciated.
|
| Thanks,
|
| Subra
|
|
 
J

Juan T. Llibre

Bruce,

This is an interesting topic.

It would seem that
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfCodeBase.asp
implies that the codebase *can* be used by
web applications, since that page specifies that:

"If the assembly has a strong name, the codebase setting
can be anywhere on the local intranet or the Internet.
If the assembly is a private assembly, the codebase
setting must be a path relative to the application's directory."

and, it also specifies that :

"This element can be used in the application configuration file,
machine configuration file (machine.config), and the publisher
policy file."

I don't see any restrictions regarding usage only in Winforms.

Also, the info in
http://msdn.microsoft.com/library/d...guide/html/cpconconfiguringieapplications.asp
states that:

"The administrator can use the <probing> element in the configuration
file to specify that the runtime should search for assemblies in
subdirectories of the application base.

Suppose that www.adventure-works.com/webApp/StockCalc
maps to C:\Inetpub\Wwwroot\Webapps\StockCalc.

Putting <probing privatePath="bin"/> in the configuration file
causes the runtime to search for assemblies in
C:\Inetpub\Wwwroot\Webapps\StockCalc\Bin
as well as C:\Inetpub\Wwwroot\Webapps\StockCalc."

The path "C:\Inetpub\Wwwroot\Webapps\StockCalc\Bin"
strongly suggests that a web application is using the <probing>
element to locate an assembly.

I confess I'm not an expert in this field, but the implications
of the statements in that page are very strong in favor of
web applications being able to use the <runtime>
configuration section of web.config.

If I'm being misled by these documents,
I'm ready to hear otherwise, though.




Juan T. Llibre
ASP.NET MVP
===========
 
S

Scott Allen

Yes, what you can do is specify another subdir to probe for assemblies, ie:

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="Foo/bin" />
</assemblyBinding>
</runtime>
<configuration>

If the codebehind for an ASPX file is compiled into the assembly in Foo/bin,
the @ Assembly directive can be used to link the two:

<%@ Assembly Name="Foo" %>
<%@ Import Namespace="FooNamespace" %>
<%@ Page language="c#" Codebehind="Foo.aspx.cs" AutoEventWireup="false" Inherits="FooNamespace.FooWebForm"
"%>
 
S

Subra Mallampalli

Scott,

Thanks! the Assembly directive was the piece I was missing. I was thinking
that the framework would automatically probe all the folders specified in
<probing> and try to load the type, but it seems that it doesn't do that.

If I were to specify the full type for the inherits attribute of the page
directive (Inhertis="FooNamespace.FooWebForm, FooAssemblyName"), it works
like a charm. With this change, I dont need the assembly or the imports
directives (we use XSL transforms and our aspx pages have no code).

However the <runtime> tag is effective only in the web.config file in the
application folder (and not in the subfolders). So, if i want to maintain
sub applications in subfolders with their own bin folders, I will have to
modify the root web.config file to include details about every subfolder.

Also, it is not clear to me if a dll change in one of the probing folders
would automatically reload the entire web application.

Thanks, again!

Subra
 
S

Scott Allen

Hi Subra:

Glad to help out.

As for the last question (does a overwriting an assembly in the probing folder
reload the app?) - I'm not sure. My guess is no.

I'm pretty sure the runtime won't even shadow copy these assemblies because
only the bin directory is setup for shadow copy. You might not be able to
overwrite those assemblies without an iisreset. Not 100% sure on this however
- would need to verify with an experiment.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,049
Latest member
Allen00Reed

Latest Threads

Top