【问题标题】:Removing .svc from WCF service results in no endpoints found从 WCF 服务中删除 .svc 会导致找不到端点
【发布时间】:2012-04-02 02:14:12
【问题描述】:

所以今天我决定要从 WCF 服务中删除 .svc 文件,并开始在网上查找。

这是我所做的逐步过程:

第 1 步:我添加了 global.asax

void Application_Start(object sender, EventArgs e) 
{
    RouteTable.Routes.Add(new ServiceRoute("Authorization", new WebServiceHostFactory(), typeof(Authenticator)));
    RouteTable.Routes.Add(new ServiceRoute("Miscellaneous", new WebServiceHostFactory(), typeof(Misc)));
}

注意:Authenticator 和 Misc 是我的接口实现

第 2 步:我启用了 asp.net 兼容性

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

第 3 步:我将[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 添加到我的每个接口实现中。

第 4 步:我必须将 [WebInvoke(BodyStyle = WebMessageBodyStyle.WrappedRequest)] 添加到界面中的每个方法中。我不知道这是做什么的,但没有它就会出错。

现在它“工作”了,但是当我导航到 root/Authorization(授权是我的第一个服务的名称)时,它告诉我没有找到端点。

我的端点在我的 web.config 中指定如下:

        <service name="AuthenticatorService.Authenticator">
            <endpoint address="auth" binding="basicHttpBinding" name="AuthEndpoint"
              contract="AuthInterface.IAuthenticator" />
            <endpoint address="mex" binding="mexHttpBinding" name="MetadataEndpoint"
              contract="IMetadataExchange" />
        </service>

我对 WCF 很陌生,所以这可能是一些愚蠢的错误。

【问题讨论】:

  • 嗯,你为什么要删除 .svc 文件?
  • 因为我读到你可以,但我不喜欢那里。
  • 有时,在您开始尝试偏离标准做法之前,以正常方式学习新技术会更容易。特别是如果您没有充分的理由选择(不仅仅是不喜欢它)。如果您觉得顽固,可以仔细阅读右侧的“相关”链接,您可以在其中找到 WCF removing .svc extention 等。
  • 你说得对,我决定不这样做。对我来说没有真正的收获。

标签: c# winforms wcf


【解决方案1】:

您在这里混合了两种技术 - 在您的配置中,您定义 basicHttpBinding 这是一个 SOAP 服务 - 但是,在您的服务路由中,您传入一个 WebServiceHost 用于 WCF 中的 REST 服务(基于webHttpBinding)。

试试这个 - 只需在您的 global.asax 文件中使用“常规”(面向 SOAP)ServiceHostFactory

void Application_Start(object sender, EventArgs e) 
{
    RouteTable.Routes.Add(
       new ServiceRoute("Authorization", 
                        new ServiceHostFactory(), typeof(Authenticator)));
    RouteTable.Routes.Add(
       new ServiceRoute("Miscellaneous", 
                        new ServiceHostFactory(), typeof(Misc)));
}

【讨论】:

  • 我没有使用它,因为我放弃了这个想法,但这将对任何前来寻找的人有所帮助。
猜你喜欢
  • 1970-01-01
  • 2019-12-10
  • 2012-06-30
  • 1970-01-01
  • 2012-01-25
  • 2012-05-07
  • 2015-11-02
  • 1970-01-01
相关资源
最近更新 更多