I passed the Microsoft 70-536 exam.
The next exam that I am targeting is the Microsoft 70-562 ASP.NET Application Development exam. I have been working with ASP.NET since version 1.0, so I should do well on this exam.
Joshua
If you are working with the Ajax Control Toolkit, sometimes the AjaxControlToolkit assembly will become corrupted in your Temporary ASP.NET Files folder. Here are a set of steps that might help you get back up and running. This is only relevant to developing with the built in web server, Cassini.
But first, here is the scenario.
Last Friday, my computer crashed while I was working on a project which references the AJAX Control Toolkit assembly.
After my computer restarted, I opened the project in Visual Studio 2008. I launched the default web page and I received the following error:
Could not load file or assembly ‘AjaxControlToolkit’ or one of its dependencies. The parameter is incorrect. (Exception from HRESULT: 0×80070057 (E_INVALIDARG))
I tried closing and reopening the project; I even restarted my computer, but none of these efforts were successful.
I deleted and re-added the AjaxControlToolkit assembly reference, but still no dice.
Here are the steps that I found which worked for me:
-
Close Visual Studio
-
Open the Temporary ASP.NET Files folder and delete its contents.
-
If the OS is Windows Vista, then the folder is %LocalAppData%\Temp\Temporary ASP.NET Files
-
If the OS is Windows XP, then the folder is %WINDIR%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
-
Restart Visual Studio
-
Open the project
That's it. Works great now.
Hope this helps.
Joshua
UPDATE
Since I initially wrote this post, I found another way of solving the Safari / Chrome ASP.NET menu issue.
First, determine whether the user agent string contains "AppleWebKit". If so, set the Page.ClientTarget property to "uplevel".
protected void Page_PreInit(object sender, EventArgs e)
{
if (Request.UserAgent != null && Request.UserAgent.IndexOf("AppleWebKit", StringComparer.CurrentCultureIgnoreCase) > -1)
{
this.ClientTarget = "uplevel";
}
}
NOTE: I have found from personal experience that the Request.UserAgent property in some cases might not be set. It is best practice to ensure that the user agent string is not null before calling the string's IndexOf method, otherwise, the code will throw a null reference exception.
Typically, you will not want to handle this event on every page that you have the ASP.NET menu, unless you have a tiny website.
Set the pageBaseType in the Web.config file to a class that inherits from System.Web.UI.Page and contains the above code.
<configuration>
<system.web>
<pages pageBaseType="MyPageBase">
...
</pages>
</system.web>
</configuration>
Here is another blog post on the menu problem.
Overview
Primarily, I develop external facing commercial Web sites. In this setting, I cannot dictate which Web browser will be used by the masses, so I have to proactively ensure that the layout and functionality remain either the same or gracefully degraded.
This can be a challenge when Internet Explorer 5/6/7, Mozilla Firefox, Apple Safari, and Opera Web browsers might adhere to differing standards.
Problem
I found an article that describes a situation with the Apple Safari browser wherein ASP.NET renders the ASP.NET Menu control in a downgraded (not gracefully either) state. I have seen this issue a couple of times in the past several years and I thought it was worth mentioning.
Solution
I will not go into much detail here, but in brief, in the %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\mozilla.browser file, remove the Menu adapter reference from the Safari configuration, save the file, and then run the aspnet_regbrowsers.exe -i tool. Running that tool parses and compiles all system-wide browser definitions into an assembly and installs the assembly into the GAC.
Conclusion
Typically, if only administering a single Web site, the preferable approach would be to create an App_Browsers folder in the root of the Web site and create a .browser file in that folder. Add the appropriate browser overrides in the file and you are good to go. No need to run an external tool. The browser configuration is dynamically compiled when the application starts. This is the only approach if the Web site is in a hosted environment.
In some future post, I would like to dive into a discussion of what are the major headaches that developers face when attacking browser compatibility issues and how to elegantly circumvent the browsers' woes.
What are the three or four issues that you find most irritating when developing for various browsers?
Hope this helps!
Joshua
The long awaited release of the .NET Framework Library source code for debugging purposes has arrived.
Scott Guthrie announced it here. Scott Hanselman and Peter Bromberg blogged about it here and here.
One of my mentors, John Robbins from Wintellect, has a great blog about this subject.
I am really excited about this and I look forward to taking advantage of this in the near future.
Hope this helps!
Joshua Johnson
Some exciting news has been announced a little while ago by Scott Guthrie, here.
Silverlight has a new timeline, new feature set, and new name (actually, new version number).
Silverlight 2.0 Beta will be released the first quarter of 2008. It includes an exciting list of new functionality and controls. The best part of all is that the release comes with a Go Live license; this will allow developers to immediately use the new feature set when the bits are available.
A new day is dawning in Web development!
Hope this helps.
Joshua Johnson
A big thank you goes out to Joe for this exciting opportunity to blog with a great group of folks on the ASP.NET blogs.
This blog will be primarily focused on ASP.NET, ASP.NET AJAX, Silverlight, VS 2008 and other related technologies.
I look forward to sharing my thoughts and reading your feedback.
Hope you enjoy!
More Posts