When Internet Explorer requests the Web server for
ieControl.dll, it is designed to send the URL "as is", without decoding %2545
into %45. The server expects an encoded string, not one that has already been
decoded.
This is a problem with the OBJECT tag and prevents managed
code in the OBJECT tag from working in this situation. It basically redirects
requests from one URL to another, that is, redirects this URL:
http://webserver/%45/ieControl.dll
to this URL:
http://webserver/E/ieControl.dll
Steps to Reproduce the Behavior
- Create a Windows Control Library project.
- Compile the control, and then name it
ieControl.dll.
- Create an HTML page, and then host Windows Form control in
Internet Explorer with an OBJECT tag.
<HTML>
<BODY><BR/>
This is a WinForm control, hosted in Internet Explorer demonstration:
<OBJECT id=myControl classid="ieControl.dll#myControl" width=500 height=500>
</OBJECT>
</BODY>
</HTML>
- Save the HTML page as Iehosting.html.
- Create a directory named %45 under wwwroot of your Web
server.
- Copy the Iehosting.html and IeControl.dll files to the
directory.
- Start Internet Explorer, move to the page at
http://webserver/%2545/iehosting.html, and then verify that the .dll does not
load correctly.