Wcf 添加自定义ServiceHostFactory时未找到终结点

Wcf 添加自定义ServiceHostFactory时未找到终结点,wcf,wcf-hosting,Wcf,Wcf Hosting,我创建了一个wcf应用程序。我没有改变任何事情。使用了Service1.GetDataint。它很好用。我可以在浏览器中点击wsdl和所有内容。然后,我创建了一个自定义服务主机工厂,它只返回一个新的服务主机,而服务永远不会出现。我无法再在浏览器中访问wsdl。我尝试添加一个自定义ServiceHost,以便进行一些调试,结果显示,即使显式调用AddDefaultEndpoints,也找不到端点。即使我将端点显式添加到web.config中,这也是正确的 有没有人对这个问题有什么想法 如果有人想看

我创建了一个wcf应用程序。我没有改变任何事情。使用了Service1.GetDataint。它很好用。我可以在浏览器中点击wsdl和所有内容。然后,我创建了一个自定义服务主机工厂,它只返回一个新的服务主机,而服务永远不会出现。我无法再在浏览器中访问wsdl。我尝试添加一个自定义ServiceHost,以便进行一些调试,结果显示,即使显式调用AddDefaultEndpoints,也找不到端点。即使我将端点显式添加到web.config中,这也是正确的

有没有人对这个问题有什么想法


如果有人想看一看,我将代码放在github上:

下面是我在正在处理的项目中定义CustomHost的方式

<%@ ServiceHost Language="C#" Debug="true" Service="Servicename.Servicename" CodeBehind="Service1.svc.cs" Factory="WcfService1.CustomServiceHostFactory"%>
请注意,CustomServiceHost看起来是空的,但这是因为我的解决方案在我删除的CustomServiceHost中有大量日志记录和配置,因此不合适

我可以看到的另一个区别是CustomServiceHost没有添加端点。端点在配置文件中定义如下:

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="Servicename.Servicename" behaviorConfiguration="ServiceBehavior">
    <endpoint address="http://*******.svc" binding="wsHttpBinding" contract="Namespace.IContract" bindingConfiguration="BindingConfig">
    </endpoint>
  </service>
</services>
<bindings>
  <wsHttpBinding>
    <binding name="BindingConfig" maxReceivedMessageSize="9291456">
      <security mode="None">
      </security>
      <readerQuotas maxArrayLength="6291456" />
    </binding>
  </wsHttpBinding>
</bindings>

为什么要使用ServiceHostFactory? 您要使用AppFabric/IIS吗?还是自托管服务

我认为您需要添加一个MEX端点

    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />

感谢您提供代码,我会看一看。当您浏览到您的wsdl时,它不起作用,您得到的实际结果是什么?比如说,你是得到404还是500,还是什么都得不到?如果你不知道,Fiddler会告诉你的。我不认为这和这个问题有任何关系。我点击wsdl的唯一原因是启动服务。我遇到的问题是没有找到端点。在CustomServiceHost内部调试以了解我所说的内容。对此表示抱歉。我在使用工厂和不使用工厂之间来回奔波。当我不用工厂时,我可以去。但是,当我使用工厂时,我无法访问wsdl.OK,那么当ApplyConfiguration代码中没有任何内容,并且将配置放在web.config文件中时会发生什么呢?更像我上面所展示的,当我注释掉ApplyConfiguration方法并放入您指定的配置时,我无法访问wsdl。即使我添加了一个mex端点。它表示元数据已关闭。但是,如果删除自定义服务主机工厂,则它将按预期工作。如果你想看的话,我更新了github中的代码。我很困惑,我很困惑。我下载了你的新版本,它对我来说很好。当你说wsdl时,你是指这个地址吗?它说“你已经创建了一个服务”。这就是我得到的。我可以看到一些不同之处,您正在使用IIS根据您的项目设置调试您的服务。尝试使用“VisualStudioDevelopmentServer”,看看是否有效?你也可以试试IIS express。如果您也使用不同的浏览器浏览您的wsdl呢。您还可以使用fiddler查看浏览到svc时发生的情况,它将告诉您web服务器的响应是什么。让我们知道你得到了什么。
    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />