Skip to main content

Microsoft Silverlight

Answered Question WCF Service problemRSS Feed

(0)

StefanG
StefanG

Member

Member

10 points

25 Posts

WCF Service problem

Hi All, 

I mentioned this in another thread but it was a bit off-topic so I decided to start a dedicated thread. I have deployed a WCF service and my Silverlight application on a server (not where I develop). When opening the application from the server (not even cross-domain) I get the following error:

 Microsoft JScript runtime error: Unhandled Error in Silverlight 2 Application An exception occurred during the operation, making the result invalid.  Check InnerException for exception details.   at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at MySilverlightProject.MyService.MyServiceMethodCompletedEventArgs.get_Result()
   at MySilverlightProject.App.client_MyServiceMethodCompleted(Object sender, MyServiceMethodCompletedEventArgs e)
   at MySilverlightProject.MyService.MyServiceClient.MyServiceMethodCompleted(Object state)

 Just in case I do have the crossdomain.xml and clientaccesspolicy.xml in the root folder of the Silverlight application. Furthermore I tried to reference the WCF service from a simple Windows Forms app and it worked smoothly. Also within my Silverlight application I use literally the same (copy & pasted) routine as in the windows forms app, this includes setting up a BasicHttpBinding and Endpoint objects.

Any ideas on how I can debug this and get more information about what actually went wrong and what the problem is?

Thanks,

Stefan

pbromberg
pbromberg

Contributor

Contributor

2102 points

367 Posts

Re: WCF Service problem

You really need to post a more complete code sample for this, in order to expect more meaningful help posts. The key thing I see here is "Microsoft JScript runtime error". Can you post some sample code please?

amit_pal1979
amit_pal...

Participant

Participant

1150 points

201 Posts

Re: WCF Service problem

"I do have the crossdomain.xml and clientaccesspolicy.xml in the root folder of the Silverlight application"

You do not need to place these files in Silverlight application rather on the root folder of your webserver. For e.g, if you are using IIS, then it will be C:\inetpub\wwwroot.

You can place any of these files and that should work however for more flexibility, it is advisable to put only clientaccesspolicy.xml. This is the file which will be checked first and if this is not found then it checks for crossdomain.xml. So, just copying clientaccesspolicy.xml will do the job.

 

Please mark the post as 'Answered' if this Answers your question

 

HarshBardhan
HarshBar...

Star

Star

9908 points

1,719 Posts

Re: WCF Service problem

Hi,

I don't think it is policy file which is causing the issue(As it can not be javascript).I think it is some thing else.

Please proveide some more details for this.

Mark as answer if this post answered your question.

Harsh Bardhan

StefanG
StefanG

Member

Member

10 points

25 Posts

Re: WCF Service problem

 Thanks for the prompt replies. 

Bellow is the code I use to call the service from within Silverlight. The reason I didn't post code is because when I was developing both the WCF service and the Silverlight app I had them in one solution (so no cross-domain calls) and they were working fine.The problems started appearing when I deployed them to the server. I was hoping this would be a common error :)

Anyway.. this is how I call the service. The code resides in private void Application_Startup(object sender, StartupEventArgs e) in App.xaml.cs because I need to fetch the data and use it to initialize my canvas:

             BasicHttpBinding bind = new BasicHttpBinding();
            EndpointAddress endpoint = new EndpointAddress("http://192.168.1.69:5554/CRMProxyService.svc");

            CrmProxyService.CRMProxyServiceClient client = new CRMProxyServiceClient(bind, endpoint);
            client.GetRelationSubjectCompleted += new EventHandler<GetRelationSubjectCompletedEventArgs>(client_GetRelationSubjectCompleted);
            client.GetRelationSubjectAsync("{A0E89268-37E6-DC11-A6B2-0003FF38484A}");

The callback method simply initializes the page:

 void client_GetRelationSubjectCompleted(object sender, GerRelationSubjectCompletedEventArgs e) { RootVisual = new Page(e.Result); }

As for the deployment, the server is a VPC. I have deployed the WCF Service and the Silverlight app as two separate websites in IIS.

 As for the cross domain xml files, I did just now put them in the wwwroot as well as in the actual website root of the Silverlight website (I thought that's where they should be) but I still get the same thing. In addition when I open the Silverlight website from within the server (no cross-domain?) I still get the same exact error.

Thanks,

Stefan

brauliod
brauliod

Participant

Participant

1169 points

472 Posts

Silverlight MVP

Re: WCF Service problem

There must be some silly small detail over there, check out this post

 http://blogs.msdn.com/cesardelatorre/archive/2008/09/29/using-silverlight-2-0-clientaccesspolicy-xml-vs-crossdomain-xml-for-web-service-cross-domain-access.aspx

 Good luck

     Braulio

// ---------------------------------
    Braulio Diez

    http://www.dbschemaeditor.com
    Free Silverlight Based Database Schema Editor
/// ---------------------------------

StefanG
StefanG

Member

Member

10 points

25 Posts

Re: WCF Service problem

Thanks for the reply Braulio.

 The only difference that I could see between my setup and the post is that the clientpolicy.xml was different.

Mine was:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

 and the post suggests I use

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
 <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

 I changed it the but error stays exactly the same. Also, for reference, this is my clientaccesspolicy.xml

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

brauliod
brauliod

Participant

Participant

1169 points

472 Posts

Silverlight MVP

Re: Re: WCF Service problem

Just a silly question, does your web service call return a lot of data? It should fail as well on your dev environment (if you use the same data), I face that some weeks ago, and It take me some time to realize that I had to setup a bigger buffer.

// ---------------------------------
    Braulio Diez

    http://www.dbschemaeditor.com
    Free Silverlight Based Database Schema Editor
/// ---------------------------------

party42
party42

Participant

Participant

1102 points

338 Posts

Re: Re: WCF Service problem

it was something like this. dont have visual studio here so not sure about syntax but  something like below should work.

1    BasicHttpBinding binding = new BasicHttpBinding();
2    binding.MaxReceivedMessageSize = 2147483647; // int's max size
3    binding.MaxBufferSize = 2147483647; // int's max size
4    EndpointAddress endpoint = new EndpointAddress("http://192.168.1.69:5554/CRMProxyService.svc")
 

Regards,
Nathan Brouwer

http://www.nathanbrouwer.nl

edward_494
edward_494

Member

Member

149 points

86 Posts

Re: WCF Service problem

about the clientaccesspolicy.xml fle. where does it need to go when running in development? i currently have it in the folder/project root level of my service.

HarshBardhan
HarshBar...

Star

Star

9908 points

1,719 Posts

Re: WCF Service problem

Hi,

If your service is running to http://yourserver.com/service/abc.svc then it  should always go to  "http://yourserver.com/clicntacesspolicy.xml ".

Mark as answer if this post answered your question.

Harsh Bardhan

NeilChen
NeilChen

Member

Member

17 points

10 Posts

Re: WCF Service problem

I suggest you to use Fiddler or some other HTTP watching tool to see the exact WCF error messages. After that you can easily tell if the problem is related to clientpolicy.xml settings.

StefanG
StefanG

Member

Member

10 points

25 Posts

Re: WCF Service problem

 Thanks for the reply and for the idea. I ran Fiddler from within the server and this is what I got:

 

 The blacked-out is my apps.

It looks very weird... when I manually try to access clientaccesspolicy.xml and crossdomain.xml I can. They open up in the browser nicely. However when Silverlight tries to access them it gets a 404. Any ideas?

 Thanks,

Stefan

brauliod
brauliod

Participant

Participant

1169 points

472 Posts

Silverlight MVP

Re: Re: WCF Service problem

If you are playing with Cassini you need to configure the path, to make the app run on the root folder, and place the xml file in the root of your project.

For a real IIS deployment, must be in the IIS root, that's a pain on the neck if you are sharing hosting :-).

 HTH

  Braulio

// ---------------------------------
    Braulio Diez

    http://www.dbschemaeditor.com
    Free Silverlight Based Database Schema Editor
/// ---------------------------------

sladapter
sladapter

All-Star

All-Star

17439 points

3,172 Posts

Answered Question

Re: WCF Service problem

StefanG:

As for the deployment, the server is a VPC. I have deployed the WCF Service and the Silverlight app as two separate websites in IIS.

 As for the cross domain xml files, I did just now put them in the wwwroot as well as in the actual website root of the Silverlight website (I thought that's where they should be) but I still get the same thing. In addition when I open the Silverlight website from within the server (no cross-domain?) I still get the same exact error.

 

1) The clientaccesspolicy.xml file only needs to be at the wwwroot folder of the Server that host your WCF service and only one file is needed (either clientaccesspolicy.xml or crossdomain.xml).

2) What do you mean by "When I open the Silverlight web site from within the same server"? If you mean you open up a browser on the server machine to run your silverlight page,  this does not change the call from cross-domain to non-cross-domain. Because you put WCF Service in another website than the webSite that host your Silverlight page. So they are cross-domain call no matter where you run your page.

To understand what is cross-domain call and most of the possible causes for Service error,  read this thread: http://silverlight.net/forums/p/24005/86700.aspx#86700

3) If the error message is still refering to JScript, then it's not likely a cross-domain issue. Have you had your code worked before you deploy it to IIS? Do you have a particular reason to put the WCF service into another WebSite instead of putting it under the same WebSite that host your page? There is nothing wrong with that, it is just little hard to debug this way.

 

 

 

 

sladapter
Software Engineer
Aprimo, Inc

Please remember to mark the replies as answers if they answered your question

StefanG
StefanG

Member

Member

10 points

25 Posts

Re: WCF Service problem

 Thanks. You're a life saver. The linked post was very helpful as well. What I did is to simply put the service and the silverlight page as two virtual directories in the same web page and that seemed to resolve the problem. I still a bit (not too much though :) ) curious as to what went wrong. I had the clientaccesspolicy.xml and crossdomain.xml under the root of the Silverlight page and not the service. Perhaps that's why?

 Anyway, thanks a lot for your help!

 Stefan

  • Unanswered Question
  • Answered Question
  • Announcement
Microsoft Communities