views:

27

answers:

1

Hi, I'm new to Silverlight programming and networking in general and I've been trying to find an answer to this all day. I'm trying to build a very simple Silverlight4 web application in VS2010 that calls a webservice on the ASP.NET website (exact same Solution as the Silverlight client app so there shouldn't be any cross-domain issues???). I wrote a Webservice using VS' "Silverlight-Enabled WCF Service" that simply returns a string.

I then wrote the code to consume the service in Silverlight:

public MainPage() { InitializeComponent();

        TestServiceClient proxy = new TestServiceClient();
        EndpointAddress address = new EndpointAddress("http://localhost:" + HtmlPage.Document.DocumentUri.Port +
            "/SilverlightApplication1.web/TestService.svc");

        proxy.Endpoint.Address = address;
        proxy.GetStringCompleted += new EventHandler<GetStringCompletedEventArgs>(proxy_GetStringCompleted);
        proxy.GetStringAsync();

    }

    void proxy_GetStringCompleted(object sender, GetStringCompletedEventArgs e)
    {
        MessageBox.Show(e.Result.ToString());
    }

This works great when I run it from VS2010. However, when I publish it to my personal webserver (IIS7) on the same computer, I get an error:

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E) Timestamp: Mon, 17 May 2010 08:29:51 UTC

Message: Unhandled Error in Silverlight Application An exception occurred during the operation, making the result invalid. Check InnerException for exception details. at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() at SilverlightApplication1.TestServiceReference1.GetStringCompletedEventArgs.get_Result() at SilverlightApplication1.MainPage.proxy_GetStringCompleted(Object sender, GetStringCompletedEventArgs e) at SilverlightApplication1.TestServiceReference1.TestServiceClient.OnGetStringCompleted(Object state) Line: 1 Char: 1 Code: 0 URI: http://thunder.webhop.org:8001/home.html

When I catch the exception in App.xaml.cs, I get the following message:

System.InvalidOperationException: Eval failed. at System.Windows.Browser.HtmlWindow.Eval (String code) at SilverlightApplication1.App.ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)

I should mention that the webserver otherwise seems to work fine. I can host Silverlight apps on it without any problems through port 8001. I just can't for the life of me figure out how to make a successful webservice call! Any help with this would be GREATLY appreciated. I've wasted an entire afternoon and evening on this. My mind's flipping in circles right now... :-(

Many, many thanks in advance! Luck

P.S. Apologies for cross-posting at Silverlight forums but had some problems there while posting.

A: 

Hi there,

I guess this doesn't actually have to do with the web service call as the exception caught in App.cs says something about "Eval failed." I think it might be the code in your proxy_GetStringCompleted handler. MessageBox.Show is nothing else than a JavaScript alert behind the scenes. Maybe you're using a browser that has a JavaScript blocker activated or the like? Anyway; what you could try is to simply use something else than MessageBox.Show(), e.g.

(new ChildWindow { Content = new TextBlock { Text = e.Result.ToString() } }).Show();

.

Cheers, Alex

alexander.biskop