Skip to main content

Silverlight 2.0 Beta1 CrossDomain Issues

Preparing for my upcoming "What's New with ASP.NET 3.5 Extensions" presentation at the Central Ohio Day of .Net, I ran into a roadblock with my simple Silverlight demo.

I have a Silverlight application calling an ASP.Net Web Service (traditional ASMX). The Silverlight application is hosted on an ASPX page served up in an ASP.Net Web Application.

I kept receiving a mix of the following two errors:

An exception of type 'System.ServiceModel.CommunicationException' occurred in System.ServiceModel.dll but was not handled in user code

Additional information: [CrossDomainError]

---------------------------------------------------------------

An exception of type 'System.ServiceModel.ProtocolException' occurred in System.ServiceModel.dll but was not handled in user code

Additional information: [UnexpectedHttpResponseCode]
Arguments:Not Found

Essentially, this is saying, "hey this control/page you're browsing on safesite.com is trying to interact with something over on unsafesite.com...and we're preventing it". Good for security, bad for demos.

Originally, when creating my Silverlight application, I chose the "Generate an HTML test page to host Silverlight within this project" option instead of creating a new web application. Bad idea. You'll always experience this cross domain issue using the HTML hosting page while calling a backend service. I quickly switched to a web application.

The easiest fix for me was to switch the web site and web service from using Cassini  localhost with dynamic ports to the machine name and named virtual directories.

Here's my original properties on the web service project:

image

I switched it to:

image

The fine folks at Microsoft even provided a helpful "Create Virtual Directory" button.

Within my Silverlight project, I also needed to update the Service Reference (orginal):

image

I switched it to:

image

After you Configure Service Reference (above), make sure you Update Service Reference (below) to update the configuration code built for you by Visual Studio:

image

Despite the Silverlight 2.0 Beta1 recent release, there is much traffic about this issue in the forums and on blogs. It's actually nothing new. I ran into this issue with Flash a while back. Another, more production-ready solution is to leverage a policy file indicating to the object (Silverlight, in this case) that it's ok to interact with a particular service on some other domain. This is a file named crossdomain.xml and/or clientaccesspolicy.xml. More information at "Some tips on cross-domain calls" and "How to: Make a Service Available Across Domain Boundaries".

RELATED

Silverlight 2.0 and WCF

Silverlight Forums CrossDomainError

Comments

Unknown said…
Intersting post and good to know to watch out for this.

Popular posts from this blog

Fast and Reliable Home Internet: Your Livelihood Depends on It

You're on yet another Zoom call and...wait what did she say? Dang it...Internet glitching again! You quickly mute your audio and video. "Kids! Get off YouTube...I'm on a call!" With everyone working and schooling from home, your Internet can't keep up. The cable company keeps claiming you're on their "super-fast Internet" but everything keeps lagging. It's all so frustrating and you just want to get your work done.  It may not be the cable company's fault. Use this approach to ensure your household enjoys a super-fast, reliable Internet! Start with the Source Run a speed test. Google "speed test" . Run that test a few times on a given day. If you're not getting at least 50Mbps download and 10Mbps upload speeds, keep reading.  Check with your Provider and do your Homework Reach out to your Internet provider. This may be your cable company or telephone provider. Understand your current plan: What package are you currently on? Wha...

Consulting Exodus Trend?

Is it just me or have a significant number of 'A' players left our consulting firms? People come and people go. Ours is certainly not an industry of "lifers". However, within the past year or so, I've witnessed several of my consulting peers -- the folks I really look up to -- leave the consulting arena for [predominately] full-time technology product firms. A smaller number have left for full-time positions at businesses while an even smaller number left to start their own business|firm|freelance|etc. Their departure struck me as odd because these were the type of folks who [I thought] would eventually become owner / partners at their respective firms. Certainly, the firms will carry on and continue to perform well but the departure of these folks would result in nothing less than a severe case of the hiccups and quite possibly a minor cardiac event. You know who you are. Please comment. Do we [the consulting industry] have a brain drain issue? Is this a norm...

Rollback a Ooops in TFS with TFPT Rollback

Rhut roe, Raggie. You just checked in a merge operation affecting 100's of files in TFS against the wrong branch. Ooops. Well, you can simply roll it back, right? Select the folder in Source Control Explorer and...hey, where's the Rollback? Rollback isn't supported in TFS natively. However, it is supported within the Power Tools leveraging the command-line TFPT.exe utility. It's fairly straightforward to revert back to a previous version--with one caveot. First, download and install the Team Foundation Power Tools 2008 on your workstation. Before proceeding, let's create a workspace dedicated to the rollback. To "true up" the workspace, the rollback operation will peform a Get Latest for every file in your current workspace. This can consume hours (and many GB) with a broad workspace mapping. To work around this, I create a temporary workspace targeted at just the area of source I need to roll back. So let's drill down on our scenario... I'm worki...