【问题标题】:What are the ramifications of an unconfigured (but working) endpoint?未配置(但工作)端点的后果是什么?
【发布时间】:2010-10-08 22:46:48
【问题描述】:

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

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

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

谨慎乐观。

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

【问题讨论】:

    标签: asp.net wcf rest endpoints


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 您的回答基本上总结了我上面添加的链接。我对此并不陌生,许多示例来自 3.5。 4.0 消除了在配置文件中配置端点的必要性。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2011-01-08
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多