0

我正在编写 WCF Rest 服务以返回 JSON 消息。我一直在尝试使用我在互联网上找到的示例作为指南。每当我启动测试客户端时,我的方法都不会显示。在服务运行时导航到 Uri 会给我一个“页面无法显示”页面。不太确定从这里去哪里。任何帮助,将不胜感激。

网络配置:

<system.serviceModel>
<bindings>
  <webHttpBinding>
    <binding name="webHttpBindingWithJasonP"
             crossDomainScriptAccessEnabled="true" />
  </webHttpBinding>
</bindings>
<services>
  <service name="WcfRestLicense.LicenseService"
           behaviorConfiguration="WebServiceBehavior">
    <endpoint behaviorConfiguration="jsonBehavior"
              binding="webHttpBinding"
              bindingConfiguration="webHttpBindingWithJasonP"
              contract="WcfRestLicense.ILicenseService" />
    <endpoint contract="IMetadataExchange"
              binding="mexHttpBinding"
              address="mex" />

  </service>
</services>
<!--<client />-->

<behaviors>
  <endpointBehaviors>
    <behavior name="jsonBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="WebServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

<protocolMapping>
  <add
    scheme="http"
    binding="webHttpBinding"
    bindingConfiguration="webHttpBindingWithJasonP" />
</protocolMapping>
<serviceHostingEnvironment
  aspNetCompatibilityEnabled="false"
  multipleSiteBindingsEnabled="true" />

服务方式:

public IQueryable<customer> GetCustomerById(string customerId)
    {
        int custId = Convert.ToInt32(customerId);
        return _context.customers.Where(c => c.cust_id == custId);
    }

界面:

[ServiceContract]
public interface ILicenseService
{
    [OperationContract]
    [WebGet(UriTemplate = "customer/{customerId}/",
        RequestFormat= WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Bare)]
    IQueryable<customer> GetCustomerById(string customerId);
}
4

1 回答 1

0

如果通过测试客户端您正在谈论WcfTestClient,那么它将不适用于 RESTful 服务;它旨在与基于 SOAP 的 Web 服务一起使用。您可以通过传入适当的 URI 在浏览器中测试 RESTful 服务,如下所示:

http://<location of your service>/service/1

其中数字 1 是客户 ID。这是一个粗略的例子,a)我对 RESTful 服务做的不多,b)我不确定你的实际地址是什么。

至于当你去 Uri 时得到一个 404,听起来你正在寻找帮助页面。您可以在配置文件中启用它:

<bindings>
  <webHttpBinding>
    <binding name="webHttpBindingWithJasonP"
             crossDomainScriptAccessEnabled="true" 
             enableHelp="true" />
  </webHttpBinding>
</bindings>
于 2013-09-10T03:39:59.600 回答