3
votes

I've added a domain service class to the server side project of my SL4 / EF / RIA Services application. I've managed to create all the necessary elements needed in my web.config section. (Btw, why isn't this generated for me when I created my Domain Service Class?)

What I'm missing now is what to put in the contract attribute of my endpoint element:

<service behaviorConfiguration="XXX.Web.RIAServices.MyServiceBehavior" name="XXX.Web.RIAServices.MyService">
    <endpoint address="http://localhost:6400/ClientBin/XXX-Web-RIAServices-MyService.svc" binding="basicHttpBinding" bindingConfiguration="LargeData" contract="???">
      <identity>
      </identity>
    </endpoint>
  </service>

I would think it should be something like XXX.Web.RIAServices.IMyService but that interface does not exist in my generated code.

What do I put in the contract attribute?

3
Btw the whole reason and had to touch the web.config at all for this service was to increase the maxItemsInObjectGraph on the service behavior. Might there be a way to increase/set this without having to set it in the web.config? I had to manually add all the web.config elements for my service so if I can avoid that, that would be great too. - Brent Lamborn

3 Answers

4
votes

Just for those out there who may use this as a way to config their DomainService with additional settings, here is how you would increase the ObjectGraph to allow WCF RIA Services to marshal more than the default # of objects during an operation:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="ProjectName.Web.Services.YourDomainService" behaviorConfiguration="ProjectName-Web-Services-YourDomainService"></service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ProjectName-Web-Services-YourDomainService">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <!-- Increase ObjectGraph for larger results -->
          <dataContractSerializer maxItemsInObjectGraph="655360" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
0
votes

The contract should be the class that extends DomainService, I think.

0
votes

I solved it by removing the endpoint element entirely. So it became just:

<service behaviorConfiguration="XXX.Web.RIAServices.MyServiceBehavior" name="XXX.Web.RIAServices.MyService">

Basically I just need to let the enpoint get generated dynamically at runtime.