在浏览器中运行WCF服务主机

时间:2018-11-20 07:02:05

标签: wcf

我有一个WCF中的ReST服务的示例项目。我只是想调试它。但是,当我开始调试时,该服务始终在“ WCF Test Client”工具内启动。相反,我正在寻找要在浏览器中运行的主机,以便可以下载WSDL文件。

我尝试在项目属性中删除“开始选项”。然后,将在WCF Self Host中打开服务,而不是WCF Test Client。如果我尝试在启用WCF自助主机的情况下使用邮递员来调用服务,则执行永远不会到达该代码,只会抛出400错误代码。

我还尝试将调试器附加到Chrome,但没有执行任何操作。我不知道我在配置或Visual Studio选项中缺少什么。我希望当我开始调试时,它将在浏览器中打开一个带有服务基址的新选项卡。

下面是我当前的配置文件。

  <system.web>
<compilation debug="true" />
<membership defaultProvider="ClientAuthenticationMembershipProvider">
  <providers>
    <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
  </providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
  <providers>
    <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
  </providers>
</roleManager>
</system.web>
 <system.serviceModel>
<services>
  <service name="WellacyMobileAPI.Service">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8733/WellacyMobileAPI/" />
      </baseAddresses>
    </host>
    <endpoint address="" binding="basicHttpBinding" contract="WellacyMobileAPI.IService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
  </service>
</services>
<behaviors>
  <endpointBehaviors>
    <behavior name="serviceBehavior">
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="serviceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceAuthorization serviceAuthorizationManagerType="WellacyMobileAPI.RestAuthorizationManager, WellacyMobileAPI" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
 </system.serviceModel>

1 个答案:

答案 0 :(得分:1)

调试WCF服务时默认启动WCF测试客户端的原因是浏览器不支持SOAP消息。这意味着并非所有的WCF服务都是HTTP模式的WCF服务,因此浏览器无法触发另一个WCF服务,后者通过其他绑定和消息格式与客户端进行通信。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-and-aspnet-web-api