尝试通过浏览器访问我的服务时,出现“找不到端点”

http://localhost:10093/Services/Service1.svc

尝试从wcftestclient访问同一地址时,出现“错误:无法从http://localhost:10093/Services/Service1.svc获取元数据”。

如果在服务实现中放置一个断点,它将被命中,因此我假设svc文件已正确设置:
<%@ ServiceHost Language="C#" Debug="true"
Service="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service"
Factory="CommonServiceFactory.WebServiceHostFactory,CommonServiceFactory" %>

这是我的配置:
<system.serviceModel>
    <services>
      <service name="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service"
               behaviorConfiguration="MainServiceBehavior">
        <endpoint name="newEndpoing"
             binding="basicHttpBinding" bindingConfiguration=""
             contract="MyApp.Core.Service.IMyAppService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MainServiceBehavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

最佳答案

因此,您有一个* .svc文件来托管您的服务。您可以在Visual Studio中右键单击该文件,然后说“在浏览器中显示”吗?您在那里得到了任何东西,还是马上就抛出了错误?

下一步:您的服务端点没有address=""属性,我认为这是必需的-尝试添加该属性(即使您未在其中指定地址)。

如果您在IIS中托管,则服务地址由SVC文件所在的虚拟目录以及SVC文件本身定义-您可能无法定义特定的端口或任何其他端口(IIS将处理该端口)。

因此,尝试连接到

http://localhost/Services/Service1.svc

那有什么机会吗?

更新:再次仔细阅读您的文章,您正在为服务指定一个特殊的工厂WebServiceHostFactory。这是.NET提供的默认WebServiceHostFactory,还是您自己构建的东西?

关键是:.NET WebServiceHostFactory将对RESTful WCF服务使用webHttpBinding-不适用于指定basicHttpBinding的端点,REST服务也不会包含任何元数据...。

更新#2:尝试在SVC文件和配置文件中仅使用服务的完全限定的类名,但不使用程序集规范。

所以改变这个:
Service="MyApp.Core.Service.Service.MyAppService,MyApp.Core.Service"

对此:
Service="MyApp.Core.Service.Service.MyAppService"

SVC文件:
<%@ ServiceHost Language="C#" Debug="true"
Service="MyApp.Core.Service.Service.MyAppService" %>

配置文件:
<services>
  <service name="MyApp.Core.Service.Service.MyAppService"
           behaviorConfiguration="MainServiceBehavior">
     <endpoint name="newEndpoing"
          binding="basicHttpBinding" bindingConfiguration=""
          contract="MyApp.Core.Service.IMyAppService" />
  </service>
</services>

关于asp.net - 在ASP.NET中托管时找不到端点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3847359/

10-13 05:57