没有调用WCF方法

时间:2015-04-13 12:57:44

标签: asp.net wcf get

我正在尝试在已有的ASP.Net应用程序中创建一个非常简单的WCF服务。
WCF在应用程序内部托管,我想,如果操作正确,它不需要在web.config中设置绑定地址(它已经在/Pages/Login.svc)。

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>

+

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace CRM.Pages
{
    [ServiceContract]
    public interface ILogin
    {
        [OperationContract]
        JSONLogin Log();
    }
}

+

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;

namespace CRM.Pages
{
    [DataContract]
    public class JSONLogin
    {
        [DataMember]
        public string ErrorMsg
        {
            get;
            set;
        }
    }

    public class Login : ILogin
    {
        [WebGet(
            ResponseFormat = WebMessageFormat.Json
            , UriTemplate = "Log"
        )]
        public JSONLogin Log()
        {
            return new JSONLogin()
            {
                ErrorMsg = "test"
            };
        }
    }
}

当我去/Pages/Login.svc时,我得到了描述页面,但是当我到“/Pages/Login.svc/Log”时没有任何反应,代码没有运行。 我想这可能是我忘记的最后一步。

编辑:

的解决方案

<behaviors>
  <serviceBehaviors>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>
<services>
  <service name="CRM.Pages.Login">
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" contract="CRM.Pages.ILogin"></endpoint>
  </service>
</services>

1 个答案:

答案 0 :(得分:1)

这是一个基于REST的服务,因此需要进行一些配置

将此添加到您的Web.config

<services>

  <service name="EnterName" behaviorConfiguration="RestService" >
   <endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" contract="IContract"></endpoint>
  </service>
</services>

并在行为下添加端点行为以启用Web http

  <endpointBehaviors>
  <behavior name="web">
    <webHttp/>
  </behavior>
</endpointBehaviors>

更改您的webget属性

 [WebGet(
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.WrappedResponse,
        UriTemplate = "/log")]