0

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

我在 web.config 文件中的唯一设置是针对 aspNetCompatibilityEnabled,因为我使用的是表单身份验证。我没有为我的服务合同定义名称或命名空间,并且我的 app.config 文件是空的,没有连接字符串。当我在我的 .svc 文件中输入地址时,我收到“找不到端点错误”。但是,当我使用我在运营合同中定义的 UriTemplates 时,我的服务可以正常运行。这有什么后果?

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

谨慎乐观。

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

4

1 回答 1

1

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

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

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

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

于 2010-10-09T08:15:15.790 回答