【windows服务】创建一个Jquery可以访问的WCF服务

1、在项目中添加一个WCF服务

2、将生成的WCFServer和IWCFServer整理到一个文件夹内

3、修改IWCFServer的内容为

先引用System.ServiceModel.Web.dll

using System.ServiceModel;
using System.ServiceModel.Web;

namespace WindowsServerDemo
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IWCFServer”。
    [ServiceContract]
    public interface IWCFServer
    {
        [OperationContract]
        //[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        [WebGet(UriTemplate = "dowork",
             RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json)]
        //[WebGet()]
        void DoWork();
    }
}

4、修改WCFServer的内容如下

using System.ServiceModel.Activation;
using System.ServiceModel.Web;

namespace WindowsServerDemo
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“TestService”。
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")]
    public class WCFServer : IWCFServer
    {
        //[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, 
        //    BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        [WebGet(ResponseFormat = WebMessageFormat.Json)]
        public string DoWork()
        {
            return "我是一个寄宿在Windows服务中的WCF服务中的一个dowork方法";
        }
    }
}

5、修改App.Config内容如下

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
    </startup>

  <system.serviceModel>
    <services>
      <service name="WindowsServerDemo.WCFServer" behaviorConfiguration="WCFServerBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:10086/WCFServer"/>
          </baseAddresses>
        </host>
        <endpoint address="http://localhost:10086/WCFServer"
                   binding ="webHttpBinding"
                  contract="WindowsServerDemo.IWCFServer"  behaviorConfiguration="web"/>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="WCFServerBehavior" >
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:10086/WCFServer/MetaData"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp helpEnabled="true" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>
  
</configuration>

6、在windows服务的OnStart方法中开启wcf服务

using System.ServiceModel;
using System.ServiceProcess;

namespace WindowsServerDemo
{
    public partial class Service1 : ServiceBase
    {
        public ServiceHost _host;

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            //逻辑
            _host = new ServiceHost(typeof(WCFServer));
            _host.Open();
        }

        protected override void OnStop()
        {
        }
    }
}

7、重新生成解决方案,并且重新生成setup项目,然后安装服务,确保服务启动

将windows服务打包成安装文件可以参考之前的笔记

https://blog.csdn.net/u011176794/article/details/97935672

8、浏览器输出试一下

9、Jquey调用

 $.ajax({
            type: "get",
            url: "http://localhost:10086/WCFServer/dowork?jsoncallback=?",
            dataType: 'jsonp',
            jsonp: "jsoncallback",
            //contentType: "application/json",
            //jsonpCallback: "call",
            success: function (data) {
                debugger;
                console.log(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                debugger;
                alert("error");
            }
        });

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值