关于”System.ServiceModel.Activation.WebServiceHostFactory“与"<webHttp/>"以及RestFul/启用了Ajax的WCF服务
2008-11-17 23:00
891 查看
N久以前,曾看到园子里有一些wcf爱好者总是问:为啥启用了ajax的wcf对应的svc总要加一句Factory=System.ServiceModel.Activation.WebServiceHostFactory
昨天无意在网上闲逛时,发现了msdn官方的解释,转贴于此,希望对大家有帮助:
原文地址: http://msdn.microsoft.com/zh-cn/bb885100.aspx
创建不使用 ASP.NET 的 WCF AJAX 服务
Windows Communication Foundation (WCF) AJAX 服务可以从任何支持 Javascript 的网页进行访问,而不需要使用 ASP.NET AJAX。本主题描述如何创建此类 WCF 服务。
有关如何将 WCF 与 ASP.NET AJAX 一起使用的说明,请参见为 ASP.NET AJAX 创建 WCF 服务。
创建 WCF AJAX 服务包括三个部分:
创建一个可以从浏览器中访问的 AJAX 终结点。
创建一个与 AJAX 兼容的服务协定。
访问 WCF AJAX 服务。
另外,也可以使用配置来添加 AJAX 终结点。在服务终结点上使用 WebHttpBinding,并使用 WebHttpBehavior 配置该终结点,如下面的代码段所示。
AJAX Service with JSON and XML Sample。
此操作可通过对 http://serviceaddress/endpointaddress/GetCities 发出 HTTP POST 请求进行访问,并会返回一条 XML 消息。
可以使用完整的 Web 编程模型来自定义这些基本方面。例如,可以使用 WebGetAttribute 或 WebInvokeAttribute 属性 (Attribute) 来控制操作响应的 HTTP 谓词,或使用各个属性 (Attribute) 的 UriTemplate 属性 (Property) 来指定自定义 URI。有关更多信息,请参见 Web 编程模型主题。
AJAX 服务中经常使用 JSON 数据格式。若要创建返回 JSON 而非 XML 的操作,请将 ResponseFormat(或 ResponseFormat)属性设置为 Json。独立 JSON 序列化主题演示了内置 .NET 类型和数据协定类型如何映射到 JSON。
通常,JSON 的请求和响应只包括一项。对于上面的 GetCities 操作,该请求将类似于以下语句。
该请求的响应类似于以下语句。
如果该操作使用了额外的参数,则请求样式必须是“包装的”,以便将两个参数都包装在一个 JSON 对象中。下面的示例显示了这种样式的 JSON 消息。
下面的协定会接受此消息。
内容类型为“application/json”的 HTTP POST 请求将被视为 JSON,而内容类型指示 XML(例如“text/xml”)的 HTTP POST 请求将被视为 XML。
HTTP GET 请求的所有请求参数都包含在 URL 本身中。
用户将负责决定如何创建对终结点的 HTTP 请求。另外,用户还可以完全控制如何构造构成请求主体的 JSON。有关通过 JavaScript 创建请求的示例,请参见AJAX Service with JSON and XML Sample。
昨天无意在网上闲逛时,发现了msdn官方的解释,转贴于此,希望对大家有帮助:
原文地址: http://msdn.microsoft.com/zh-cn/bb885100.aspx
创建不使用 ASP.NET 的 WCF AJAX 服务
Windows Communication Foundation (WCF) AJAX 服务可以从任何支持 Javascript 的网页进行访问,而不需要使用 ASP.NET AJAX。本主题描述如何创建此类 WCF 服务。
有关如何将 WCF 与 ASP.NET AJAX 一起使用的说明,请参见为 ASP.NET AJAX 创建 WCF 服务。
创建 WCF AJAX 服务包括三个部分:
创建一个可以从浏览器中访问的 AJAX 终结点。
创建一个与 AJAX 兼容的服务协定。
访问 WCF AJAX 服务。
创建 AJAX 终结点
若要在 WCF 服务中启用 AJAX 支持,最基本的方法是在与服务关联的 .svc 文件中使用 WebServiceHostFactory,如下面的示例所示。<%ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CityService" Factory=System.ServiceModel.Activation.WebServiceHostFactory %> |
AJAX Service with JSON and XML Sample。
创建与 AJAX 兼容的服务协定
默认情况下,通过 AJAX 终结点公开的服务协定将以 XML 格式返回数据。而且,默认情况下,通过对包含跟有操作名称的终结点地址的 URL 发出 HTTP POST 请求,将可以访问服务操作,如下面的示例所示。[OperationContract] string[] GetCities(string firstLetters); |
可以使用完整的 Web 编程模型来自定义这些基本方面。例如,可以使用 WebGetAttribute 或 WebInvokeAttribute 属性 (Attribute) 来控制操作响应的 HTTP 谓词,或使用各个属性 (Attribute) 的 UriTemplate 属性 (Property) 来指定自定义 URI。有关更多信息,请参见 Web 编程模型主题。
AJAX 服务中经常使用 JSON 数据格式。若要创建返回 JSON 而非 XML 的操作,请将 ResponseFormat(或 ResponseFormat)属性设置为 Json。独立 JSON 序列化主题演示了内置 .NET 类型和数据协定类型如何映射到 JSON。
通常,JSON 的请求和响应只包括一项。对于上面的 GetCities 操作,该请求将类似于以下语句。
“na” |
[“Nairobi”, “Naples”, “Nashville”] |
{“firstLetters”: “na”, “maxNumber”: 2} |
[WebInvoke(BodyStyle=WebMessageBodyStyle.WrappedRequest, ResponseFormat=WebMessageFormat.Json)] [OperationContract] string[] GetCities(string firstLetters, int maxNumber); |
访问 AJAX 服务
WCF AJAX 终结点始终接受 JSON 和 XML 请求。内容类型为“application/json”的 HTTP POST 请求将被视为 JSON,而内容类型指示 XML(例如“text/xml”)的 HTTP POST 请求将被视为 XML。
HTTP GET 请求的所有请求参数都包含在 URL 本身中。
用户将负责决定如何创建对终结点的 HTTP 请求。另外,用户还可以完全控制如何构造构成请求主体的 JSON。有关通过 JavaScript 创建请求的示例,请参见AJAX Service with JSON and XML Sample。
相关文章推荐
- win8 iis8 发布wcf服务,诡异的Could not load type System.ServiceModel.Activation.HttpModule
- 错误:The MagicAjax HttpModule is not included in web.config. Add [<httpModules><add name="MagicAjax" type="MagicAjax.Magic
- jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding
- The MagicAjax HttpModule is not included in web.config. Add [<httpModules><add name="MagicAjax" type
- WCF:Could Not Load Type ‘System.ServiceModel.Activation.HttpModule’
- WCF部署到IIS异常(详细: 不能加载类型System.ServiceModel.Activation.HttpModule )
- System.Web.HttpRequestValidationException: 从客户端(txtName="<fd>")中检测到有潜在危险的 Request.Form 值
- System.Web.HttpRequestValidationException: 从客户端(txtName="<fd>")中检测到有潜在危险的 Request.Form 值。
- 未能从程序集“System.ServiceModel, Version=3.0.0.0..."中加载类型“System.ServiceModel.Activation.HttpModule”
- The MagicAjax HttpModule is not included in web.config. Add [<httpModules><add name="MagicAjax" type="MagicAjax.MagicAja
- WCF 4.0 无法加载 System.ServiceModel.Activation.HttpModule
- System.Web.HttpRequestValidationException: 从客户端(name="<a href=''>我是晓菜鸟</a>")中检测到有潜在危险的 Request.Form 值
- 未能从程序集“System.ServiceModel”中加载类型“System.ServiceModel.Activation.HttpModule”。
- 关于标签<meta http-equiv="X-UA-Compatible" content="IE=edge" />
- WCF:The caller was not authenticated by the service. ---> System.ServiceModel.FaultException: The request for security token could not be satisfied because authentication failed.
- Could not load type System.ServiceModel.Activation.HttpModule解决办法
- Could not load type System.ServiceModel.Activation.HttpModule解决办法
- 解决:Could not load type 'System.ServiceModel.Activation.HttpModule' from assemb
- 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的解决办法
- 未能从程序集“System.ServiceModel, Version=3.0.0.0”中加载类型“System.ServiceModel.Activation.HttpModule” 的错误解决方法