如何:在不使用配置的情况下添加 ASP.NET AJAX 终结点
Windows Communication Foundation (WCF) 允许您创建一个服务来公开一个支持 ASP.NET AJAX 的终结点,并且可以从客户端网站上的 JavaScript 中调用该终结点。若要创建这样的终结点,可以使用配置文件(与使用所有其他 WCF 终结点一样),或使用不要求任何配置元素的方法。本主题演示第二种方法。
若要在不使用配置的情况下创建具有 ASP.NET AJAX 终结点的服务,则必须由 Internet 信息服务 (IIS) 来承载创建的服务。若要使用此方法激活 ASP.NET AJAX 终结点,请在 .svc 文件内的 @ServiceHost 指令中指定 WebScriptServiceHostFactory 作为 Factory 参数。此自定义工厂是一个组件,可自动将 ASP.NET AJAX 终结点配置为可以从客户端网站上的 JavaScript 中调用。
有关可运行示例,请参见无配置的 AJAX 服务。
有关如何使用配置元素配置 ASP.NET AJAX 终结点的概述,请参见如何:使用配置来添加 ASP.NET AJAX 终结点。
创建基本 WCF 服务
通过用 ServiceContractAttribute 属性标记的接口定义基本 WCF 服务协定。用 OperationContractAttribute 标记每个操作。确保设置 Namespace 属性。
[ServiceContract(Namespace = "MyService")]] public interface ICalculator { [OperationContract] // This operation returns the sum of d1 and d2. double Add(double n1, double n2); //Other operations omitted… }
使用
CalculatorService
实现ICalculator
服务协定。public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } //Other operations omitted…
定义
ICalculator
和CalculatorService
实现的命名空间,方法是将它们放置在一个命名空间块中。Namespace Microsoft.Ajax.Samples { //Include the code for ICalculator and Caculator here. }
在不使用配置的情况下在 Internet 信息服务中承载服务
在应用程序中创建一个名为 service 的新文件(扩展名为 .svc)。编辑此文件,在其中为服务添加适当的 @ServiceHost 指令信息。指定在 @ServiceHost 指令中使用 WebScriptServiceHostFactory 来自动配置 ASP.NET AJAX 终结点。
<%@ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CalculatorService" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>
生成服务并从客户端调用该服务。在调用该服务时,Internet 信息服务 (IIS) 会将其激活。有关在 IIS 中承载的更多信息,请参见如何:在 IIS 中承载 WCF 服务。
调用服务
- 在相对于 .svc 文件的空地址处配置终结点,这样便可以使用服务了。可通过向 service.svc/<操作>(例如,表示
Add
操作的 service.svc/Add)发送请求来调用服务。可以通过在 ASP.NET AJAX 脚本管理器控件的“脚本”集合中输入服务 URL 来使用响应的服务。有关示例,请参见无配置的 AJAX 服务。
示例
在相对于基 URL 的空地址处创建自动配置的终结点。使用此方法也可以添加和使用配置文件。如果配置文件包含终结点定义,则这些终结点将添加到自动配置的终结点中。
例如,service.svc 使用 WebScriptServiceHostFactory,而服务目录包含一个 Web.config 文件,该文件在“soap”相对地址处使用 BasicHttpBinding 定义同一服务的终结点。在这种情况下,服务将包括两个终结点:一个在 service.svc 处(该终结点响应 ASP.NET AJAX 请求),另一个在 service.svc/soap 处(该终结点响应 SOAP 请求)。
如果配置文件在空相对地址处定义一个终结点并且使用 WebScriptServiceHostFactory,则将引发异常且无法启动服务。
不能使用配置来修改自动配置终结点上的设置。如果必须修改某些设置(如读取器配额),不得通过从 .svc 文件移除 WebScriptServiceHostFactory 并创建终结点的配置项来使用免配置方法。
如果服务要求 ASP.NET 兼容模式(例如,如果服务使用 HttpContext 类或 ASP.NET 授权机制),则仍需要配置文件来启用此模式。所需的配置元素为 <serviceHostingEnvironment> 元素,必须按如下所示添加该元素:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled=”true” /> </system.serviceModel>
有关更多信息,请参见 WCF 服务和 ASP.NET 主题。
WebScriptServiceHostFactory 类是 ServiceHostFactory 的派生类。有关服务主机工厂机制的详细说明,请参见主题使用 ServiceHostFactory 扩展宿主。
另请参见
任务
如何:将启用了 AJAX 的 ASP.NET Web 服务迁移到 WCF