这与客户有什么关系吗?我的意思是,如果我将AspNetCompatibilityRequirements设置为required。 wcf是否仍然可以从WP7,android和ios等移动设备访问?
答案 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)也可以做得相当优雅。