找不到WCF服务的端点

时间:2014-03-21 20:38:58

标签: c# json wcf endpoint

我创建了WCF服务。当我用WCF测试客户端测试它时,该服务工作正常。 我决定配置终点以使用浏览器显示结果。

我有一个空白页面,其中包含未找到端点。,但没有更多详细信息。

这是我的web.config

  <system.serviceModel>

<services>
  <service name="mCollectorService.CollectorService" behaviorConfiguration="mCollectorService.CollectorServiceBehavior">
    <endpoint address="../CollectorService.svc"
              binding="webHttpBinding"
              contract="mCollectorService.ICollectorService"
              behaviorConfiguration="webBehaviour"
              />
  </service>
</services>


<behaviors>
  <serviceBehaviors>
    <behavior name="mCollectorService.CollectorServiceBehavior">
      <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="webBehaviour">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>

    <protocolMapping>
  <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

这是我的 ICollectorService

[ServiceContract]
public interface ICollectorService
{

    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "Authenticate/{agentcode}/{pin}/{deviceIMEI}/{gpslat}/{gpslong}")]
    Authentification Authenticate(string agentcode,string pin, string deviceIMEI, string gpslat, string gpslong);

}

任何帮助。

1 个答案:

答案 0 :(得分:1)

尝试修改您的服务:

<services>
  <service name="mCollectorService.CollectorService" behaviorConfiguration="mCollectorService.CollectorServiceBehavior">
    <endpoint address="../CollectorService.svc"
              binding="webHttpBinding"
              contract="mCollectorService.ICollectorService"
              behaviorConfiguration="webBehaviour"
              />
    <host>
       <baseAddresses>
           <add baseAddress="http://localhost:51855/CollectorService.svc" />
       </baseAddresses>
</host>
  </service>
</services>

并更改您的OperationContract

[ServiceContract]
public interface ICollectorService
{

   [OperationContract]
   [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, 
   BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "Authenticate/{agentcode}/{pin}/{deviceIMEI}/{gpslat}/{gpslong}")]
    Authentification Authenticate(string agentcode,string pin, string deviceIMEI, string gpslat, string gpslong);

}

以这种方式调用您的网址!

http://localhost:51855/CollectorService.svc/CollectorService.svc/Authenticate/YourAgentCode/YourPin/YourDeviceIMEI/YourGPSLat/YourGPSLong

希望这会有所帮助。谢谢!

编辑:如果您要实施身份验证机制,我建议您将请求包装在JSON中,而不是在请求网址中发送。