AspNetCompatibilityRequirements究竟意味着什么?

时间:2012-03-13 18:50:21

标签: asp.net .net wcf

这与客户有什么关系吗?我的意思是,如果我将AspNetCompatibilityRequirements设置为required。 wcf是否仍然可以从WP7,android和ios等移动设备访问?

2 个答案:

答案 0 :(得分:18)

它与客户无关。 ASP.NET兼容性在following article

中进行了解释
  

虽然WCF模型旨在表现一致   托管环境和传输,通常有场景   应用程序不需要这种程度的灵活性。 WCF的   ASP.NET兼容模式适用于不兼容的方案   需要能够在IIS之外托管或进行通信   HTTP之外的协议,但它使用ASP.NET的所有功能   Web应用程序平台。

     

与WCF托管的默认并排配置不同   基础设施拦截WCF消息并将其路由到HTTP之外   管道,在ASP.NET兼容模式下运行的WCF服务   完全参与ASP.NET HTTP请求生命周期。在   兼容模式,WCF服务通过使用HTTP管道   IHttpHandler实现,类似于ASPX的请求方式   处理页面和ASMX Web服务。因此,WCF的行为   与ASMX相关的以下ASP.NET功能:

     
      
  • HttpContext:在ASP.NET兼容模式下运行的WCF服务可以   访问当前及其相关状态。

  •   
  • 基于文件的授权:在ASP.NET中运行的WCF服务   通过附加文件系统访问可以保护兼容模式   控制列表(ACL)到服务的.svc文件。

  •   
  • 可配置的URL授权:ASP.NET的URL授权规则是   在WCF服务在ASP.NET中运行时强制执行WCF请求   兼容模式。

  •   
  • HttpModuleCollection扩展性:因为WCF服务在运行   ASP.NET兼容模式完全参与ASP.NET HTTP   请求生命周期,HTTP管道中配置的任何HTTP模块都是   能够在服务之前和之后对WCF请求进行操作   调用

  •   
  • ASP.NET模拟:使用当前标识运行WCF服务   ASP.NET模拟的线程,可能与IIS不同   如果已启用ASP.NET模拟,则为进程标识   应用。如果ASP.NET模拟和WCF模拟都是   为特定服务操作启用了服务实现   最终使用从WCF获得的身份运行。

  •   

答案 1 :(得分:0)

它启用了ASP.NET会话状态,这不是从iOS,Android和WP7访问WCF服务的挑战。使用WCF与这些平台进行通信的真正问题(至少对于iOS和Android而言)是缺少适合客户端的代理。这些客户端可以使用WCF完成RESTful服务,但不使用ASP.NET会话状态,因为RESTful服务是无会话的。使用MVC路由和JsonResult(或MVC4中的Web API)也可以做得相当优雅。