【问题标题】:Running WCF service host inside browser在浏览器中运行 WCF 服务主机
【发布时间】:2018-11-20 07:02:04
【问题描述】:

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

我已尝试删除项目属性中的“开始选项”。然后在 WCF Self Host 中打开服务而不是 WCF 测试客户端。如果我尝试使用邮递员在启用 WCF Self Host 的情况下调用服务,则执行永远不会到达代码,只会抛出 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>

【问题讨论】:

    标签: wcf


    【解决方案1】:

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

    【讨论】:

    • 好的。那么,这意味着在我的配置文件的某个地方,有 SOAP 的配置吗?等等,让我在问题中添加配置文件。
    • 您想将该服务发布为一个 RESTful 服务吗?您应该将 basichttpbinding 更改为 webhttpbinding 并将 webhttp 行为应用于端点。stackoverflow.com/questions/53200663/…
    • 太棒了。谢谢。这就是问题所在。我将绑定创建为 webhttp,但在实际端点中没有更改。
    猜你喜欢
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多