December 2008 - Posts
Anatomy of an ASP.Net MVC Application
In order to fully understand how this magic of ASP.Net MVC works, I went to build an MVC application from scratch.
1. Create a new ASP.Net Web Application. This creates an application with a Default.aspx page, a standard web.config file, and adds the initial references to the project.
2. Add references to System.Web.Abstractions.dll, System.Web.Routing.dll and System.Web.Mvc.dll, all of them can be found at c:\Program Files\Microsoft ASP.NET\ASP.NET MVC Beta\Assemblies folder.
Use the MvcHttpHandler to handle MVC requests. Open the code-behind file of Default.aspx (default.aspx.cs) and in the Page_Load method, process the request in MVC style:
protected void Page_Load(object sender, EventArgs e)
{
HttpContext.Current.RewritePath(Request.ApplicationPath);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
}
3. Add a Global Application Class (global.asax), and in the Application_Start method, map the route to the home controller.
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapRoute("Default Route",
"{controller}/{action}",
new { controller = "Default", action="Index" });
}
4. In order to use the MapRoute and IgnoreRoute methods, you should add a using directive to use the namespace System.Web.Mvc, since those are extension methods. The MapRoute method takes a name of a route as the first parameter, a URI template as the second, and default values as the third. Notice that the default values object should have properties that correspond the names of the properties in the URI template. The route above maps an incoming Url to a combination of a controller and an action.
5. Create a default controller. Add a class to the web application under a Controllers folder and name it DefaultController. Notice the naming convention for it: Default comes from the route default value and the controller is just a suffix in the convention.
This class should inherit from System.Web.Mvc.Controller class, and should contain a public method with a name the corresponds to an action. Since the default action is Index (taken from the default route), then the class should look like this:
public class DefaultController : Controller
{
public string Index()
{
return "Hello, world";
}
}
6. Run the application, and navigate to the application directory ( “/” ), what you should get is the response “hello, world”.
But, If you try to navigate to the Index action in the Default controller (/Default/Index), you will get an error.
7. Add the Url Routing Module. Open the web.config, and locate the <httpModules> tab in the system.web section. There, register the Url Routing Module:
<httpModules>
...
<add name="UrlRoutingModule"
type="System.Web.Routing.UrlRoutingModule, System.Web.Routing,
Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
8. Run the application and navigate to the Index action in the Default Controller. Now, you should get the same response as earlier.
9. Return a view as the result of the Index action. Change the return value of the Index method in the default controller to be of type ActionResult. There are several types of results we can return (such as JosnResult, ContentResult etc.) but in this sample we will return a ViewResult, by calling the View method.
public ActionResult Index()
{
return View();
}
Create a view that corresponds to this action. When called parameterless, the View method will look for a view whose name is equals to the name of the action, inside a folder the corresponds to the name of the controller. Create a new ASP.Net Form called Index.aspx inside Views\Default\ folder.
In order to make this an MVC View, open the code behind file (Index.aspx.cs) and change the class to inherit from System.Web.Mvc.ViewPage.
Edit the page (in design mode or source mode) and add a greeting message:
<body>
<form id="form1" runat="server">
<div>
<h1>Hello, world</h1>
</div>
</form>
</body>
10. Run the application and you should receive the response from the View we’ve just created. The routing engine called the Index action in the Default controller, which returned the Index.aspx view.
11. Display data in the View. Open the controller, and in the Index method, add data to the ViewData dictionary:
public ActionResult Index()
{
ViewData["name"] = "Guy";
return View();
}
Now, in the view markup, use that data in the greeting line:
<body>
<form id="form1" runat="server">
<div>
<h1>Hello, <%= ViewData["name"] %></h1>
</div>
</form>
</body>
12. Run the application and receive a greeting message bounded to the data that the controller has added to the dictionary.
In this post I build an ASP.Net MVC application from scratch in order to understand the anatomy of an ASP.Net MVC application and the magic behind this framework. This understanding can help me with adding MVC capabilities to my existing web applications as well.
Enjoy!
Getting Started with ASP.Net MVC Framework
Now that Developer Academy 3 is over, it’s time to catch up with all the technologies out there I haven’t gotten into in the past several months. The first one of them is ASP.Net MVC Framework.
Here are some Getting Started links that I have collected that will help me in the near future:
Download ASP.Net MVC Beta (Installer)
Download ASP.Net MVC Beta (Source Code)
ASP.Net MVC How Do I Videos
Stephen Walter’s Blog (Including ASP.Net MVC Tip of the Day)
Phil Haack’s Blog
Enjoy!
Building an IE8 Visual Search Provider for my Twitter Friends
With the upcoming release of Internet Explorer 8, one of the new features in it that I am most excited about is the Visual Search Suggestions.
In this post I will build a Visual Search Suggestion Provider that displays a list of my twitter friends with their current status and profile image as I type their name in the search box.
You can download the source code of the complete version of this guide.
This guide is based on the Search Provider Extensibility in Internet Explorer page on MSDN.
1. Building a WCF REST Service
Create a new Empty Web Site, and call it TwitterFriendsSearch.
Add a new Item of type WCF Service, and call it SuggestService.svc.
This creates the following files in the web site:
- ISuggestService.cs – The Service Contract. Defines the signature of the service operations.
- SuggestService.cs – The Service Implementation.
- SuggestService.svc – The service endpoint.
- Web.config – Configuration settings for the WCF Service.
Change the service contract definition (ISuggestService.cs) to the following:
[ServiceContract]
public interface ISuggestService
{ [OperationContract]
string Search(string friend);
}
Open the service implementation file (SuggestService.cs) and implement the service. For now, we will give it a basic implementation, and later on we will change it.
public class SuggestService : ISuggestService
{ public string Search(string friend)
{ return "Hello, " + friend;
}
}
In order to provide the REST support, add the necessary WebGet attribute above the service operation.
[OperationContract]
[WebGet(UriTemplate = "/Search?q={friend}", BodyStyle = WebMessageBodyStyle.Bare)]
string Search(string friend);
Change the configuration file of the WCF Service (web.config) to enable REST support. Under System.serviceModel section in the configuration file, locate the behaviors node, and add a new Endpoint behavior:
<system.serviceModel>
...
<behaviors>
...
<endpointBehaviors>
<behavior name="REST">
<webHttp/>
</behavior>
</endpointBehaviors>
...
</behaviors>
...
</system.serviceModel>
In the same section, locate the service definition and the first endpoint definition. Change the binding to webHttpBinding (instead of wsHttpBinding) and add apply the endpoint behavior:
<services>
<service behaviorConfiguration="SuggestServiceBehavior"
name="SuggestService">
<endpoint address=""
binding="webHttpBinding"
contract="ISuggestService"
behaviorConfiguration="REST" />
</service>
</services>
Run the project, and navigate to the .svc file. Then, add the UriTemplate like you defined on the service with a friend name to search:
http://localhost:50434/TwitterFriendsSearch/SuggestService.svc/search?q=guy
You should get a response saying "hello, guy”.
2. Returning a Search Suggestion
According to the MSDN Page I linked to above, the final Visual Search Suggestion response should look like this (this response corresponds to the search suggestion picture I showed at the beginning of this post).
<?xml version="1.0" encoding="utf-8" ?>
<SearchSuggestion>
<Query>guy</Query>
<Section>
<Item>
<Text>guyhaim</Text>
<Description>@rohitbhargava http://tinyurl.com/6m9e4g</Description>
<Url>http://twitter.com/home</Url>
<Image source="http://...normal.jpg"
height="48" width="48" alt="guyhaim" />
</Item>
<Item>
<Text>Guy Malachi</Text>
<Description>Yahoo toolbar looks kinda weird.</Description>
<Url>http://twitter.com/home</Url>
<Image source="http://...normal.jpg"
height="48" width="48" alt="guym" />
</Item>
<Item>
<Text>guy zohar</Text>
<Description>switch screen</Description>
<Url>http://twitter.com/home</Url>
<Image source="http://...normal.jpg"
height="48" width="48" alt="guyzo" />
</Item>
<Item>
<Text>guyzarz</Text>
<Description>@ekampf May it rest in peace, in one piece.</Description>
<Url>http://twitter.com/home</Url>
<Image source="http://...normal.jpg"
height="48" width="48" alt="guyzarz" />
</Item>
</Section>
</SearchSuggestion>
Create the following classes to represent the response elements, and use the Xml Serialization attributes in order to later serialize them into the required output.
// Image.cs
[XmlType]
public class Image
{ [XmlAttribute(AttributeName="source")]
public string Source { get; set; }
[XmlAttribute(AttributeName = "height")]
public int Height { get; set; }
[XmlAttribute(AttributeName = "width")]
public int Width { get; set; }
[XmlAttribute(AttributeName = "alt")]
public string Alt { get; set; }}
// Item.cs
[XmlType]
public class Item
{ [XmlElement]
public string Text { get; set; }
[XmlElement(IsNullable=false)]
public string Description { get; set; }
[XmlElement(IsNullable = false)]
public string Url { get; set; }
[XmlElement(IsNullable = false)]
public Image Image { get; set; }}
// SearchSuggestion.cs
[XmlRoot(Namespace="")]
public class SearchSuggestion
{ public SearchSuggestion()
{ this.Section = new List<Item>();
}
[XmlElement]
public string Query { get; set; }
[XmlArray]
public List<Item> Section { get; set; }}
Change the service contract to return a SearchSuggestion response instead of a string. Also add the XmlSerializerFormat attribute to make sure the response is being serialized to XML.
[ServiceContract]
public interface ISuggestService
{ [OperationContract]
[WebGet(UriTemplate = "/Search?q={friend}", BodyStyle = WebMessageBodyStyle.Bare)]
[XmlSerializerFormat]
SearchSuggestion Search(string friend);
}
Change the service implementation to return a SearchSuggestion with default values.
public SearchSuggestion Search(string friend)
{ SearchSuggestion suggestion = new SearchSuggestion
{ Query = friend
};
suggestion.Section.Add(new Item
{ Text = friend,
Description = "Hello, " + friend,
Url = "http://blogs.microsoft.co.il/blogs/bursteg",
Image = new Image
{ Source = "http://tinyurl.com/burstegprofileimage",
Alt = "Guy Burstein",
Width = 48,
Height = 48
}
});
return suggestion;
}
If you now run the project and navigate to the same url as above, you should get this response:
<?xml version="1.0" encoding="utf-8" ?>
<SearchSuggestion xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Query>omer</Query>
<Section>
<Item>
<Text>omer</Text>
<Description>Hello, omer</Description>
<Url>http://blogs.microsoft.co.il/blogs/bursteg</Url>
<Image source="http://tinyurl.com/burstegprofileimage"
height="48"
width="48"
alt="Guy Burstein" />
</Item>
</Section>
</SearchSuggestion>
3. Adding the Search Provider to Internet Explorer
Add a new Xml file to the web site, and call it FriendsSuggestion.xml. This file contains the provider details for the browser, and should contain the following contents:
<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<ShortName>Friends Search</ShortName>
<Url type="text/html"
template="http://localhost:50434/TwitterFriendsSearch/
SuggestService.svc/search?q={searchTerms}" />
<Url type="application/x-suggestions+xml"
template="http://localhost:50434/TwitterFriendsSearch/
SuggestService.svc/search?q={searchTerms}" />
<Image height="16"
width="16"
type="image/icon">http://twitter.com/favicon.ico</Image>
</OpenSearchDescription>
Add a Default.aspx page to the web site. In this file, create a JavaScript function that registers the new provider within the browser:
<script type="text/javascript">
function Register() { window.external.AddSearchProvider('FriendsSuggestion.xml');}
</script>
Create an HTML button, and execute the Register method when it is clicked.
<form id="form1" runat="server">
<div>
<button onclick='Register();'>Click Here</button>
</div>
</form>
Run the project and navigate to Default.aspx. Click the button to register the provider within the browser, and make sure that the search suggestion option is checked.
Now, go to the search box, click the friends search (the one with the twitter icon) and search for any keyword. What you should see is the static Visual Search Suggestion we’ve just created.
4. Getting Twitter Friends as Search Results
Now, I want to return live results from my friends list from Twitter, but the following section can be changed according to any source of your choice.
In the service implementation, remove the default assignment of the section property of the search suggestion element, and perform a HTTP call the Twitter to get the list of your friends (replace “bursteg” with your Twitter account)
string url = string.Format(
"http://twitter.com/statuses/friends/{0}.xml", "bursteg");
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseString = reader.ReadToEnd();
reader.Close();
Then, use LINQ to XML to parse the response, and get the list of friends that corresponds to the search creteria:
XDocument document = XDocument.Parse(response, LoadOptions.None);
var query = from e in document.Root.Descendants("user") where e.Element("name").Value.Contains(friend) || e.Element("screen_name").Value.Contains(friend) select new Item
{
Text = e.Element("name").Value, Image = new Image
{ Source = e.Element("profile_image_url").Value, Alt = e.Element("screen_name").Value, Width = 48,
Height = 48
},
Description = (e.Element("status") == null ? "" :
HttpUtility.HtmlDecode(e.Element("status").Element("text").Value)), Url = (String.IsNullOrEmpty(e.Element("url").Value) ?
"http://twitter.com/home" :
e.Element("url").Value) };
Finally, add those items to the search suggestion and return it.
suggestion.Section.AddRange(query);
The full version of the Search method should look like this:
public SearchSuggestion Search(string friend)
{ SearchSuggestion suggestion = new SearchSuggestion();
suggestion.Query = friend;
string url = string.Format("http://twitter.com/statuses/friends/{0}.xml", "bursteg"); HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string responseString = reader.ReadToEnd();
reader.Close();
XDocument document = XDocument.Parse(responseString, LoadOptions.None);
var query = from e in document.Root.Descendants("user") where e.Element("name").Value.Contains(friend) || e.Element("screen_name").Value.Contains(friend) select new Item
{
Text = e.Element("name").Value, Image = new Image
{ Source = e.Element("profile_image_url").Value, Alt = e.Element("screen_name").Value, Width = 48,
Height = 48
},
Description = (e.Element("status") == null ? "" :
HttpUtility.HtmlDecode(e.Element("status").Element("text").Value)), Url = (String.IsNullOrEmpty(e.Element("url").Value) ?
"http://twitter.com/home" :
e.Element("url").Value) };
suggestion.Section.AddRange(query);
return suggestion;
}
Now, if you search for a friend, you’ll get his name, profile image and current status with the Visual Search Suggestion in Internet Explorer 8.

You can download the source code of the complete version of this guide.
Enjoy!
#DevAcademy3 is a Twitter Trend!
Today, in my Silverlight Session at Developer Academy 3 I had a Hash Tag contest, as I explained in a previous post.
The contest was so popular, that the tag #devacademy3 became a Twitter Trend:
The result of the content was:
which means that Kobi Magnezi won a Microsoft ARC Mouse:
Read all #devacademy3 updates on Twitter.
Silverlight 2 Demo from Developer Academy 3: Part 1 – Anatomy of a Silverlight Application
After Setting the environment with the Twitter Service, we can start building the SilverTwitter Application.
Create a new Silverlight Application
Create a new project, and select a Silverlight Application. Name it SilverTwitter and click OK.
Confirm the creation of a Web Application that will host the Silverlight Application in it by clicking OK.
Visual Studio creates a new Solution that contains the Silverlight Application (SilverTwitter) and a Web Application that hosts the Silverlight application (SilverTwitter.Web).
Layout Controls in the Application
Once the application is created, Visual Studio opens the application preview windows, and lets the developer start building the application UI using XAML.
Silverlight allows you to layout controls in various ways, from which the Grid is the default:
<UserControl x:Class="SilverTwitter.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400"
Height="300">
<Grid x:Name="LayoutRoot"
Background="White">
</Grid>
</UserControl>
Add rows and columns definitions to the grid:
<Grid x:Name="LayoutRoot"
Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="75" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="150" />
</Grid.ColumnDefinitions>
</Grid>
Display the grid lines and change its background color.
<Grid x:Name="LayoutRoot"
ShowGridLines="True"
Background="LightBlue">
...
</Grid>
The application should look like this:

Place a TextBox, a Button and a ListBox in the grid. Notice that I used the Grid.Row and Grid.Column in order to place the controls in the wanted cell of the grid:
<Grid ...>
...
<TextBox x:Name="txtStatus"
Grid.Row="0"
Grid.Column="0"
Margin="10"
FontSize="18" />
<Button x:Name="btnUpdate"
Grid.Row="0"
Grid.Column="1"
Margin="10"
FontSize="18"
Content="Update" />
<ListBox x:Name="lstTweets"
Grid.Row="1"
Grid.ColumnSpan="2"
Margin="10"
Background="CornflowerBlue"
FontSize="18">
</ListBox>
</Grid>
Now the application should look like this:
Handle User Events
Now we want to add some interaction. For example, we want to react the user clicking the Update button, take the status and add it to the list of tweets.
Add a click event to the button. As you type it, Visual Studio lets you created a handler for the event.
The, after the event handler is created, navigate to the handler:
Visual Studio opens page.xaml.cs and lets you edit the event handler. Get the status and add it to the listbox.
private void btnUpdate_Click(object sender, RoutedEventArgs e)
{
string status = this.txtStatus.Text;
this.lstTweets.Items.Add(status);
}
Running and Testing the Application
If you now run the application, you’ll notice it is not taking all the browser window. In order to make it stretch to the size of the browser, change the Width and Height properties of the root element in Page.xaml to MinWidth and MinHeight.
<UserControl ...
MinWidth="400"
MinHeight="300">
...
</UserControl>
In the SilverTwitter.Web project, select SilverTwitterTestPage.html and set it as the start page, and run the application.
Write a status message in the textbox and click the Update button. The status should appear as a new item in the list.
Anatomy of a Silverlight Application
Now, lets understand what had just happened. We navigated to an HTML page, and we got a Silverlight application all over the page. How did this happen?
When we created the new Silverlight application, Visual Studio created 2 projects for us. One was the Silverlight application itself (SilverTwitter), and the other project is a Web Application in which there is the HTML page we just navigated to.
If we open that HTML page, we can see that all that is required in order to display the Silverlight application in the page is an object tag, that activates the Silverlight Plugin in the browser, and passes the source parameter that points to a .xap file that sits in a folder called ClientBin.
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2"
width="100%" height="100%">
<param name="source" value="ClientBin/SilverTwitter.xap" />
...
</object>
What is this .xap File?
In the web application that hosts the Silverlight application, you can find the SilverTwitter.xap under the ClientBin folder.
If you open it with Winzip or Winrar, you’ll see that it is no other than a Zip file that contains 2 files: the SilverTwitter.dll (our compiled Silverlight application) and another file called AppManifest.xaml which contains the list of parts in this .xap file:
<Deployment xmlns=http://schemas.microsoft.com/client/2007/deployment
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
EntryPointAssembly="SilverTwitter"
EntryPointType="SilverTwitter.App"
RuntimeVersion="2.0.31005.0">
<Deployment.Parts>
<AssemblyPart x:Name="SilverTwitter" Source="SilverTwitter.dll" />
</Deployment.Parts>
</Deployment>
So, to summarize this: The HTML page loads the Silverlight plugin and provides it with the path to the .xap file. The plugin downloads the .xap file to the client machine and runs it from there.
In the next part I’ll use the Networking layer in Silverlight in order to update the status and get a list of tweets.
Enjoy!
מצגות הכנס זמינות להורדה באתר
כדי שתוכלו לבחור טוב יותר לאילו הרצאות תרצו להגיע, ותוכלו להכין מראש שאלות למרצים, העלינו את המצגות לאתר הכנס.
הורידו את המצגות של Developer Academy 3.
נתראה בכנס!
Silverlight 2 Demo from Developer Academy 3: Part 1 – Setting the Environment
Downloads
Twitter Service
Since I didn’t want to spend time on dealing with the Twitter API during the session, I built a Twitter Web Service a few weeks back, and posted several posts while building it:
You can download a full version of this Service from here.
After you extract the files, open the web.config file, and change the user name and password in the appSettings section to your twitter user name and password.
In order to make sure it works fine after you extract it, try to navigate to the .svc file and look for this response:
Additionally, you can search for posts tagged with #devacademy3 tag using the following url:
http://localhost.../Twitter.svc/services/search/devacademy3
If this works fine, than you can move on to the next step (link will be provided soon).
If you run into some problems, here are some posts I’ve written that may help you:
Enjoy!
RSS Feed for Hebrew MSDN Articles
I have already written about the Hebrew MSDN Articles in the past. Now, we finally have an RSS Feed for them, which was a very wanted feature.
You can register here.
Enjoy!
Create a Twitter Mashup with Popfly
1. Go to Popfly at www.popfly.com, and sign in with your Windows Live ID.
2. In the main Tab Control, select the Mashup Tab and click Create.
3. In the Blocks list, search for Input, and drag the User Input block to the design surface.

4. Double Click the User Input Block to open the configuration view, and set the following settings:
Operation: getText (no change)
Label: Twitter Account:
Default Text: empty
Button Text: Go (no change)
Click OK to finish.
5. In the Blocks list, search for Twitter, and drag the Twitter block to the design surface next to the User Input Block. Then, connect between the User Input box and the Twitter Box though the blue circles.
6. Double Click the Twitter Block to open the configuration view, and set the following settings:
Operation: getLatestUserPosts
userID: Source = User Input, Value = [output string]
Number: Source = Custom, Value = 10
Click OK to finish.
7. In the Blocks list, search for Bubble, and drag the Bubble Updater block to the design surface next to the Twitter Block. Then, connect between the Twitter box and the Bubble Updater Box though the blue circles.
8. Double Click the Bubble Updater Block to open the configuration view, and set the following settings:
userID: Source = Twitter, Value = name
Status: Source = Twitter, Value = text
Thumbnail: Source = Twitter, Value = imageUrl
Click OK to finish.
9. Now that the mashup is ready, just click run.
Enter the Twitter account name, and click Go.
10. Enjoy the Popfly Twitter Mashup!
Enjoy!
Developer Academy 3 – Updated Schedule
Register here.
Labs and Experts Panels In Developer Academy 3
Instructor Led Labs:
LAB01 - C# 3.0 and LINQ
In this lab you will use LINQ to query custom objects. You will learn about the enhancements made to C# to support LINQ and understand the breadth of applications enabled by this powerful technology.
LAB02 - ADO.NET Entity Framework
In this lab you will define an Entity Data Model (EDM) to represent an existing database and integrate it into an application. You will learn how the Entity Framework eases development by offering a conceptual model rather than a relational storage schema.
LAB03 - Team System – Unit Testing
In this lab you will review the main features of the Unit Test module in VSTS. You will learn to create custom tests, test non-public data, create data-driven unit tests, view the test results and determine the code coverage of the tests.
LAB04 - Silverlight 2
In this lab you will add dynamic content to an existing website using Silverlight and XAML in Visual Studio 2008. You will learn about the main features of Silverlight and understand how it enables developers to create richer user-experiences on the Web.
LAB05 – Windows Presentation Foundation
In this lab, you will create a new WPF project and develop a versatile layout to an existing database. You will learn about the main features of WPF, and how to create pages and to enable navigation.
Panels
PNL01 - NET Architecture Panel: Post PDC contemplations.
In this glimpse into the future session we'll bring about the best think-tanks to share with us their reflections on some of the most innovation technologies and trends introduced by Microsoft in the last Professional Developers Conference (oct-2008). The issues that we'll cover will be Windows Azure, Oslo, Future of programming languages and Parallel computing. If time will permit we'll allow for attack session by the attendees, were you'll have a chance to take your best shot at the baffled panelists
PNL02 - Modern User Interface Technologies and Design
In this panel we shall review Microsoft most advanced User Interface Technologies, while emphasizing real projects implementation. We shall also present project based on SilverLight and WPF technology allowing the audience to review and ask questions on the advantages, benefits and difficulties of each technology. The experts on the panel are representing a wide variety of people in the industry whom are practicing the work of art in creating rich User Interfaces in Microsoft most advanced Technologies, facing logical aspects, Graphics and implementing "XAML" with the connection to the "Code Behind".
PNL03 - Align the development process with the Business using Visual Studio Team System
The current situation force us to cut unnecessary expenses and align our development process with the business. In this panel we shall discuss the following issues in order to help you better focus your efforts: Team system deployment – Do It Yourself, Agile vs. Scrum and CMMI best practice for selecting process template, Glimpse from VS2010 and new power tools and Team system for non .Net development teams.
PNL04 - Data Security Experts
In this panel we shall review the most relevant topics of "Data Security", both problems and solutions you are facing in your daily work. We shall review topics such as "Web 2 Security", "SOA Security" and "Application Firewall". The goal of this panel is to share with you the "Best Practices" accumulated by "Data Security" experts during their daily work and to give answers for your questions.
Register here.
Enjoy!
WCF on IIS7 on Vista - Adding .svc Handler
I’ve just formatted and reinstalled my computer yesterday. When I started to build a WCF Service on IIS 7 on my Vista machine, I got the following message:
Server Error in Application “Default Web Site/...”
HTTP Error 404.3 - Not Found
The page you are requesting cannot be served because of the extension of the configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.
This is what I did to have it work:
- Start the command window (cmd) as an Administrator.
- Navigate to:
C:\windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\
In case you are running on a 64Bit machine, than navigate to: C:\windows\Microsoft.Net\Framework64\v3.0\Windows Communication Foundation\
- Run the following command: ServiceModelReg –i
After some messages on the console window…
your service should now work.
Enjoy!