未配置(但正在工作)端点的后果是什么?

时间:2010-10-08 22:46:48

标签: asp.net wcf rest endpoints

我有一个功能齐全的wcf服务,我可以在客户端上使用jQuery执行CRUD操作。我希望这个小型服务应用程序是可移植的,所以我试图避免任何app或web.config设置(例如特定地址端点)。我已将我的服务应用程序编译成一个小的dll文件,并在各种Web地址托管的几个不同项目中进行了尝试。一切正常。

我在web.config文件中设置的唯一设置是aspNetCompatibilityEnabled因为我正在使用表单身份验证。我没有为我的服务合同定义名称或命名空间,我的app.config文件为空,没有连接字符串。当我输入我的.svc文件的地址时,我得到'端点未找到错误'。但是,当我使用我在操作合同中定义的UriTemplates时,我的服务功能完全正常。这有什么后果?

我不关心在.svc文件上公开我的数据对象或方法。我只是需要这项服务是可移植的,而不会因为一些无法预料的错误而爆炸。

谨慎乐观。

更新 经过进一步调查后,我的上面示例似乎是WCF的默认行为。 MS的一篇好文章解释了它here.

1 个答案:

答案 0 :(得分:1)

我不确定便携式是什么意思。您的服务在dll中,可以在任何Web应用程序中使用。那么它取决于您的.NET Framework版本。

在.NET 3.5中,您必须在.svc文件中托管服务,并在配置文件或代码中对其进行配置(服务,端点,行为,AspNetCompatibility)。

在.NET 4.0中,您可以利用简单的配置模型,该模型可以根据其他提供的信息为您创建端点。您可以通过基于配置的激活或服务路由在.svc文件中托管服务。在所有情况下,使用WebServiceHostFactory允许使用WebHttpBinding自动创建端点非常重要。您只需配置AspNetCompatibility。如果您需要进一步指定webHttp行为,您也可以将其置于配置中而不指定行为的名称。这种行为将被视为所有服务的默认行为(在.NET 3.5中也不可能)。

在这两种情况下,您都不需要配置基址,因为它始终来自托管Web应用程序。