WCF路由服务

代码下载: 链接:https://pan.baidu.com/s/1i76Ht0lMWmosaCrDjaA2cA 密码:muj1
1.新建类库
Service.Interface
using System.ServiceModel;
namespace Artech.RoutingServiceDemo.Service.Interface
{
[ServiceContract(Namespace="http://www.artech.com/")]
public interface IHello
{
[OperationContract]
string SayHello(string userName);
}
[ServiceContract(Namespace = "http://www.artech.com/")]
public interface IGoodbye
{
[OperationContract]
string SayGoodbye(string userName);
}
}
.新建web项目
TestService
using Artech.RoutingServiceDemo.Service.Interface;
namespace Service
{
public class HelloService: IHello
{
public string SayHello(string userName)
{
return string.Format("Hello, {0}", userName);
}
}
public class GoodbyeService : IGoodbye
{
public string SayGoodbye(string userName)
{
return string.Format("Goodbye, {0}", userName);
}
} }
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Web; namespace TestWcf
{
[ServiceContract]
public interface IService
{
[OperationContract]
string DoWork();
}
public class Service2 : IService
{
public string DoWork()
{
return "你妹!";
}
}
/// <summary>
/// 用于调用服务的类
/// </summary>
public class MyClient : ClientBase<IService>, IService
{
public MyClient(Binding binding, EndpointAddress edpAddress)
: base(binding, edpAddress)
{ } /// <summary>
/// 调用服务端函数
/// </summary>
/// <returns></returns>
public string DoWork()
{ return base.Channel.DoWork();
} }
}
.testservice的web.config
<system.serviceModel>
<!--添加此节点,否则出现405错误-->
<bindings>
<wsHttpBinding>
<binding name="NoneSecurity" maxBufferPoolSize="" maxReceivedMessageSize="" useDefaultWebProxy="false">
<readerQuotas maxStringContentLength="" maxArrayLength=""/>
<security mode="None"/>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
<behavior name="routingBehavior">
<routing filterTableName="greetingFilterTable"/>
</behavior>
</serviceBehaviors>
</behaviors> <services>
<service name="TestWcf.Service2" behaviorConfiguration="metadataBehavior">
<endpoint address="" binding="wsHttpBinding" contract="TestWcf.IService" bindingConfiguration="NoneSecurity"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
<service name="Service.HelloService">
<endpoint binding="ws2007HttpBinding" contract="Artech.RoutingServiceDemo.Service.Interface.IHello"/>
</service>
<service name="Service.GoodbyeService">
<endpoint binding="ws2007HttpBinding" contract="Artech.RoutingServiceDemo.Service.Interface.IGoodbye"/>
</service>
<service behaviorConfiguration="routingBehavior" name="System.ServiceModel.Routing.RoutingService">
<endpoint binding="ws2007HttpBinding" contract="System.ServiceModel.Routing.IRequestReplyRouter"/>
</service>
</services>
<client>
<endpoint name="helloService" address="http://localhost:65515/WcfService/HelloService.svc" binding="ws2007HttpBinding" contract="*"/>
<endpoint name="goodbyeService" address="http://localhost:65515/WcfService/GoodbyeService.svc" binding="ws2007HttpBinding" contract="*"/>
</client>
<routing>
<filters>
<filter name="Address4HelloService" filterType="EndpointAddress" filterData="http://localhost:65515/WcfService/HelloService.svc"/>
<filter name="Address4GoodbyeService" filterType="EndpointAddress" filterData="http://localhost:65515/WcfService/GoodbyeService.svc"/>
</filters>
<filterTables>
<filterTable name="greetingFilterTable">
<add filterName="Address4HelloService" endpointName="helloService"/>
<add filterName="Address4GoodbyeService" endpointName="goodbyeService"/>
</filterTable>
</filterTables>
</routing>
<!--无svc文件wcf服务激活-->
<serviceHostingEnvironment>
<serviceActivations>
<add relativeAddress="Service2.svc" service="TestWcf.Service2"/>
<add relativeAddress="WcfService/HelloService.svc" service="Service.HelloService"/>
<add relativeAddress="WcfService/GoodbyeService.svc" service="Service.GoodbyeService"/>
<!--, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35-->
<!--System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35-->
<add relativeAddress="WcfService/GrettingService.svc" service="System.ServiceModel.Routing.RoutingService, System.ServiceModel.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
.新建testwcfweb项目
using Artech.RoutingServiceDemo.Service.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TestWcf; namespace TestWcf
{
public partial class TestForm : System.Web.UI.Page
{ public void testnosvc()
{
EndpointAddress edpHttp = new EndpointAddress("http://localhost:65515/Service2.svc");
MyClient client = new MyClient(new WSHttpBinding(SecurityMode.None), edpHttp); Response.Write(client.DoWork()+"<br/>"); //Console.ReadKey();
}
public void test2()
{
using (ChannelFactory<IHello> channelFactoryHello = new ChannelFactory<IHello>("helloService"))
using (ChannelFactory<IGoodbye> channelFactoryGoodbye = new ChannelFactory<IGoodbye>("goodbyeService"))
{
IHello helloProxy = channelFactoryHello.CreateChannel();
IGoodbye goodbyeProxy = channelFactoryGoodbye.CreateChannel();
Response.Write(helloProxy.SayHello("Zhang San")+"<br/>");
Response.Write(goodbyeProxy.SayGoodbye("Li Si")+ "<br/>");
}
}
protected void Page_Load(object sender, EventArgs e)
{
testnosvc();
test2();
}
}
}
.testwcf的web.config
<?xml version="1.0" encoding="utf-8"?>
<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-WebApplication18-20180807095436.mdf;Initial Catalog=aspnet-WebApplication18-20180807095436;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<pages>
<namespaces>
<add namespace="System.Web.Optimization" />
<add namespace="Microsoft.AspNet.Identity" />
</namespaces>
<controls>
<add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt" />
</controls>
</pages>
<membership>
<providers>
<!--
已在此模板中禁用 ASP.NET 成员身份。请访问以下链接 http://go.microsoft.com/fwlink/?LinkId=301889,以了解此模板中的 ASP.NET 成员身份支持
-->
<clear />
</providers>
</membership>
<profile>
<providers>
<!--
已在此模板中禁用 ASP.NET 成员身份配置文件。请访问以下链接 http://go.microsoft.com/fwlink/?LinkId=301889,以了解此模板中的 ASP.NET 成员身份支持
-->
<clear />
</providers>
</profile>
<roleManager>
<!--
已在此模板中禁用 ASP.NET 成员身份角色。请访问以下链接 http://go.microsoft.com/fwlink/?LinkId=301889,以了解此模板中的 ASP.NET 成员身份支持
-->
<providers>
<clear />
</providers>
</roleManager>
<!--
如果要部署到具有多个 Web 服务器实例的云环境,
则应将会话状态模式从 "InProc" 更改为“自定义”。此外,
还应将名为 "DefaultConnection" 的连接字符串更改为连接到
SQL Server (包括 SQL Azure 和 SQL Compact)实例,而不是连接到 SQL Server Express 实例。
-->
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
<providers>
<add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
</providers>
</sessionState>
<httpModules>
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
</httpModules>
</system.web>
<system.webServer>
<modules>
<remove name="FormsAuthentication" />
<remove name="ApplicationInsightsWebTracking" />
<add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" culture="neutral" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom> <!--wcf配置-->
<system.serviceModel>
<!--添加此节点,否则出现405错误-->
<bindings>
<wsHttpBinding>
<binding name="NoneSecurity"
maxBufferPoolSize="" maxReceivedMessageSize="" useDefaultWebProxy="false">
<readerQuotas maxStringContentLength="" maxArrayLength=""/>
<security mode="None"/>
</binding>
</wsHttpBinding>
</bindings> <behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior> <behavior name="routingBehavior">
<routing filterTableName="greetingFilterTable"/>
</behavior>
</serviceBehaviors> <endpointBehaviors>
<behavior>
<clientVia viaUri="http://localhost:65515/WcfService/GrettingService.svc"/>
</behavior>
</endpointBehaviors> </behaviors> <!--<protocolMapping>
<add binding="wsHttpBinding" scheme="http" />
</protocolMapping>--> <services>
<!--<service behaviorConfiguration="metadataBehavior" name="TestWcf.Service2">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="NoneSecurity"
contract="TestWcf.IService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>-->
</services> <client>
<endpoint name="helloService" address="http://localhost:65515/WcfService/HelloService.svc" binding="ws2007HttpBinding" contract="Artech.RoutingServiceDemo.Service.Interface.IHello"/>
<endpoint name="goodbyeService" address="http://localhost:65515/WcfService/GoodbyeService.svc" binding="ws2007HttpBinding" contract="Artech.RoutingServiceDemo.Service.Interface.IGoodbye"/>
</client> <!--无svc文件wcf服务激活-->
<serviceHostingEnvironment>
<serviceActivations>
<!--<add relativeAddress="Service2.svc" service="TestWcf.Service2"/>--> </serviceActivations>
</serviceHostingEnvironment> </system.serviceModel>
</configuration>
上一篇:springboot 配置elasticsearch Java High Rest Client


下一篇:elasticsearch Java Client用户指南