Hi John
Thanks for your patience to explain it to me, and now I understand how
3.5 extends 2.0.
I finally solved the problem, and I'd like to share how I did it. Before
that there is one thing I need to clarify a bit.
Have a look at the hierarchy I mentioned:
--Root folder (Project A, built in ASP.NET 2.0, is a virtual directory
in IIS)
----bin folder for all binaries
----web.config A
----Subfolder B folder (Project B, built in ASP.NET 3.5)
------web.config B
What I want to emphasize is that Subfolder B (Project B) is not a
Virtual Directory or an Application in IIS. Project B is still in the
same application as Project A.
It take me three attempts to get the job done.
1. The first attempt is that I can leave the files and folders in the
above hierarchy as is, expecting everything would be fine. The thought
is that the web.config B will override web.config A, so that A and B
would not affect each other. But I got the following error:
Parser Error Message: It is an error to use a section registered as
allowDefinition='MachineToApplication' beyond application level. This
error can be caused by a virtual directory not being configured as an
application in IIS.
Source Error:
Line 27: <authentication mode="Windows"/>
Certainly the proposal is not what I need. Still I know that some
configuration cannot be place in web.config in a sub folder. So I
comment this line in web.config B:
<!--<authentication mode="Windows"/>-->
After that I openned an Ajax page in Subfolder B, I still got an error
saying:
Error: ASP.NET Ajax client-side framework failed to load.
I thought the reason was probably that the modules or handlers are not
able to be loaded from web.config B. I stopped here and went on to my
second attempt.
2. I was thinking maybe I can put all the stuffs in web.config B into a
<location> section in web.config A. In this way things in web.config A
and B are still not completely mixed up, and Web.config B would not
affect files out of Subfolder B.
Unfortunately, there was another error:
Parser Error Message: Only one <configSections> element allowed per
config file and if present must be the first child of the root
<configuration> element.
So it seems that <location> is not generous enough to accept the whole
things.
3. OK, now is the time to (or I should see I have to) mix up the two
web.config files. What I did was creating a new 2.0 project, put the
web.config A in the new project, and then updated it to 3.5. All the 3.5
stuffs were added to web.config A (lets say it A+). Everything seemed to
be fine, but it was not long before I was disappointed again.
I put the mixed web.config back into the root folder. However when I
tested the Ajax page in Subfolder, the Page was always postbacked. After
some time of hunting, I found this line made a difference:
<xhtmlConformance mode="Legacy"/>
So I made a modification to web.config A+.
<location path="subfolder">
<system.web>
<xhtmlConformance mode="Transitional"/>
</system.web>
</location>
Finally I got the job done, though not perfectly as I had thought.
I had hoped that there would be some documents specifying what
can/cannot be put in a web.config in a sub folder, and what can/cannot
be put in a <location> section. If anyone know this kind of document, do
tell me and I will really appreciate it.
So, that's all (Engish is not my native language so I found myself
unable to express all my feelings sometimes).
If you have any thoughts or suggestions, please let me know.
Thanks again, John and Mark, for your help.
Regards
Warren