代码下载: 链接: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>

WCF路由服务的更多相关文章

  1. WCF Routing 服务

    WCF4.0支持路由机制,通过RoutingService实现请求分发.拦截处理. 一.应用场景 1.暴露一个endpoint在外网,其余服务部署于内网: 2.请求分发,能对服务做负载功能: 二.WC ...

  2. WCF Routing服务,负载均衡

    WCF4.0支持路由机制,通过RoutingService实现请求分发.拦截处理. 一.应用场景 1.暴露一个endpoint在外网,其余服务部署于内网: 2.请求分发,能对服务做负载功能: 二.WC ...

  3. angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用

    今天我们要讲的是ng2的路由系统. 例子

  4. 如何:加载分页结果(WCF 数据服务)

    WCF 数据服务 允许数据服务限制单个响应源中返回的实体数.在此情况下,源中的最后一项包含指向下一页数据的链接.通过调用执行 DataServiceQuery 时返回的 QueryOperationR ...

  5. 微软开源 WCF 分布式服务框架,并入 .NET 基金会项目

    微软北京时间2015.5.20 在其 .NET Foundation GitHub 开源项目页中开放了 WCF 分布式服务框架的代码.WCF突然之间成为一个热门话题,在各大网站上都有不同的报道:dot ...

  6. 一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)

    JSONP(JSON with Padding)可以看成是JSON的一种“使用模式”,用以解决“跨域访问”的问题,这篇简单的文章给出一个简单的例子用于模拟如何通过jQuery以JSONP的访问调用一个 ...

  7. WCF服务与WCF数据服务的区别

    问: Hi, I am newbie to wcf programming and a little bit confused between WCF Service and WCF Data  Se ...

  8. WCF 数据服务 4.5

    .NET Framework 4.5 其他版本 WCF 数据服务(以前称为"ADO.NET Data Services")是 .NET Framework 的一个组件.可以使用此组 ...

  9. IIS上发布WCF发布服务,访问不到

    1 环境是IIS7,发布WCF发布服务,访问不到. 一种原因站点自动生成“程序应用池”和站点的Framwork版本不一致. 解决的办法:新建一个“程序应用池”,然后站点指向这个新建的“程序应用池”

随机推荐

  1. The APK failed to install. Error:Could not parse error string.

    问题一: The APK failed to install. Error:Could not parse error string. 今天拖拽自己的apk到模拟器上运行,报上述错误. 搜索解决方案. ...

  2. 找回密码的url分析

    https://www.example.com/reset?email=user@example.com&key=b4c9a289323b21a01c3e940f150eb9b8c542587 ...

  3. nutch笔记

    1.Nutch 是一个开源Java实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫.

  4. spring jpa nativequery in与修改

    参考 https://blog.csdn.net/a3025056/article/details/79022816 @Modifying@Transactional /* 如果在事务中使用需加上此注 ...

  5. C/s程序过时了吗?

    目前的程序从原来的形态演变成了 C/s,B/s,和手机端. 其实应该各有自己的客户群,及定位. 比如C/s为单机版的可以完成个性化突出的复杂客户端应用,企业级别的应用. B/s的特点安装简单,功能制作 ...

  6. ucore-lab1-练习2report

    练习二实验报告 1.从CPU加电后执行的第一条指令开始,单步跟踪BIOS: 1.1默认的gdb需要进行一些额外的配置才能进行qemu的调试任务,qemu和gdb之间使用网络端口1234进行通信. la ...

  7. js 小结

    <script type="text/javascript"> var hotalAddJs = { makeSubmitDataHandler: function ( ...

  8. 【Linux 系统】Linux探秘之用户态与内核态

    一. Unix/Linux的体系架构 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核).内核从本质上看是一种软件——控制计算机的硬件资源,并提供上层应用程 ...

  9. 5-java 排序, sort, collections.sort()

    https://blog.csdn.net/whp1473/article/details/79678974 import java.util.ArrayList; import java.util. ...

  10. idea中快捷键设置为eclipse中快捷键

    打开file-settings,然后搜索key,在keymap中选择eclipse (1) (2)