1
votes

Please tell me I'm doing something stupid in setting up my wcf rest service. I've create a web application and added a wcf service to it.

Here is my web.config

<configuration>
    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>

    <system.serviceModel>
      <services>
        <service name="WebApplication1.Service1">
          <endpoint address="../Service1" behaviorConfiguration="httpBehavior"

                binding="webHttpBinding"
                contract="WebApplication1.IService1"/>
        </service>
      </services>
      <behaviors>
        <endpointBehaviors>
          <behavior name="httpBehavior">
            <webHttp helpEnabled="true" />
          </behavior>
        </endpointBehaviors>
        <serviceBehaviors>
            <behavior name="">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
    <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
</configuration>

And my service interface:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [WebGet(UriTemplate = "data/{value}", ResponseFormat = WebMessageFormat.Json)]
    Person GetData(string value);
}

And my service code:

public class Service1 : IService1
    {

        public Person GetData(string value)
        {
            return new Person()
            {
                Id = Convert.ToInt32(value),
                Name = "John Doe"
            };
        }
    }

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

I have no problems browsing to the service http://localhost/RoleProviderSite/Service1.svc but as soon as I add the data/10 http://localhost/RoleProviderSite/Service1.svc/data/10 "There was no channel actively listening at 'http://mymachinename/RoleProviderSite/Service1.svc/data/10"

I would have thought that adding the "[WebGet(UriTemplate = "data/{value}", ResponseFormat = WebMessageFormat.Json)]" would mean that this url would be accessible, but maybe I'm missing something?

I'm using : Internet Information Services, Version: 5.1 and XP OS

Thanks very much for any help.

1

1 Answers

1
votes

remove the address in the endpoint and your URI should work as expected. You cannot use relative addressing like that for your endpoint