【问题标题】:Hosting Web Service in IIS - Not able to access the service在 IIS 中托管 Web 服务 - 无法访问该服务
【发布时间】:2019-01-04 10:08:58
【问题描述】:

我在 Visual Studio 中有一个 WCF 服务应用程序项目,其中包含以下文件

  • ZooWebService.svc
  • 网络配置

我试图在 IIS 中托管 Web 服务,但是当我从 IIS 浏览到我的 Web 服务时,Web 服务根本没有加载。它只是在浏览器中显示“正在加载”。

这是我的 WebConfig 文件:

 <?xml version="1.0"?>
    <configuration>
    <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
     </appSettings>
     <system.web>
    <compilation debug="false" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1"/>
     </system.web>
      <system.serviceModel>
    <services>
      <service behaviorConfiguration="Default" 
     name="WCFWebService.ZooWCFService">
        <endpoint address="" binding="basicHttpBinding" 
     contract="WCFWebService.IZooWCFService" />
        <endpoint address="mex" binding="mexHttpBinding" 
        contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/" />
          </baseAddresses>
        </host>
        </service>
      </services>
       <behaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="Default">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
         </serviceBehaviors>
       </behaviors>
     </system.serviceModel>
     </configuration>

我做了以下,我做错了什么?

  1. 打开 IIS
  2. 右键单击默认网站
  3. 已选择“添加应用程序”
  4. 填充的“别名”字段
  5. 将“物理路径”填充到解决方案内容所在的目录
  6. 点击确定
  7. 在 Visual Studio 中重建解决方案

【问题讨论】:

  • 在 IIS 中,您的身份验证设置为什么?您是否在 IIS 中为端口 8080 设置了绑定,并且在您的项目中的属性 -> Web 是否指向localhost:8080
  • 我会检查这个。我正在使用的 IIS 是运行 Windows 10 的本地计算机上的 IIS 10。这有关系吗?

标签: c# wcf


【解决方案1】:

我们不需要在配置文件中指定基址,需要在网站绑定模块中设置。
https://social.msdn.microsoft.com/Forums/vstudio/en-US/d42fc165-052d-476a-9580-1240b3d0293d/specify-endpoint-in-wcf-webconfig?forum=wcf
那么我们应该在 IIS 中启用 WCF 功能。
最后我们可以在http://ip:port/xxxx.svc 中看到Web 服务描述。 如果有什么我可以帮忙的,请随时告诉我。

【讨论】:

  • 我在“打开和关闭 Windows 功能”中看不到 WCF 服务选项。我正在尝试在 Windows 10 上运行的本地 IIS 10 中托管服务。其次,如您共享的链接中所述。如果我想使用特定端口,我需要在 IIS 中设置它还是不分配它并从配置文件中删除基地址?
  • 是的,您可以不分配它并从配置文件中删除基地址。当我们的操作系统为窗口 10 时,位于控制面板、程序和功能、左侧菜单栏中的“打开和关闭 Windows 功能”。祝你好运。
  • 很好,它现在可以工作了,我删除了 baseAddresses 元素。我还在 .NET Framework 3.5 下激活了 HTTP 激活模块。我还在 .NET Framework 4.7 Advanced Services 下激活了 WCF 服务。如您的屏幕截图所示,我勾选了 HTTP 激活。感谢您的帮助
【解决方案2】:

要在 IIS 中启用 WCF,您可能必须先为 .net 框架启用 HTTP 激活功能。

一些链接可以做到这一点 https://docs.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20full%20documentation-v1/GUID-326D6F7B-08EC-43EB-A5A7-9C51DD9E555C

https://pubs.vmware.com/mirage-56/index.jsp?topic=%2Fcom.vmware.mirage.api.pg.doc%2FGUID-552D845B-E530-4898-A06B-4F73E668BEFF.html

完成此操作后,您可以尝试将 WCF 直接从 Visual Studio 部署到本地 IIS>

右键单击 WCF 项目 -> 转到属性 -> 在属性窗口中 -> 选择 web 选项卡 -> 在服务器部分选择本地 IIS 并单击创建虚拟目录。

现在从 Visual Studio 运行 WCF,这将在本地 IIS 中托管 WCF。

【讨论】:

  • 感谢分享。我认为这将帮助其他遇到与我相同问题的人。我设法通过使用您的链接以及上述亚伯拉罕钱的帖子解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多