【问题标题】:Hosting WCF Service on IIS在 IIS 上托管 WCF 服务
【发布时间】:2012-01-04 18:07:52
【问题描述】:

我是 WCF 和 windows 移动开发的新手。我正在尝试创建一个使用 MSFT 同步框架的偶尔连接的应用程序,这需要使用 WCF 服务。

我有一个 Visual Studio 项目,其中包含我的智能设备项目、一个 WCF 服务库项目和一个 WCF 服务网站项目。

该服务托管在我的本地机器上,不使用 IIS,我可以通过 http://localhost:55149/ElectricReadingServiceSite/ElectricReading.svc 访问它

但是,当我将它添加到 IIS 时,它会给我一个 http 404 资源找不到错误。我无法弄清楚为什么它认为资源不存在。

这是我的 web.config:

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="MiddleTierServiceLibrary.ElectricReadingCacheSyncService" 
               behaviorConfiguration="MiddleTierServiceLibrary.ElectricReadingCacheSyncServiceBehavior">
        <endpoint 
            address=""  
            binding="basicHttpBinding"  
            contract="MiddleTierServiceLibrary.IElectricReadingCacheSyncContract">
          <identity>
            <dns value="10.104.238.123"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MiddleTierServiceLibrary.ElectricReadingCacheSyncServiceBehavior">
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

我的ElectricReading.svc 看起来像这样:

<%@ ServiceHost Language="C#" Debug="true" 
        Service="MiddleTierServiceLibrary.ElectricReadingCacheSyncService" %>

非常感谢任何帮助!

编辑:我可以采取任何工具或步骤来更好地了解问题所在吗? 404 错误对我帮助不大。

【问题讨论】:

  • 你检查过iis配置吗?有时 WCF 没有默认安装在 IIS 中,您应该手动执行此操作。
  • 您是通过ServiceHost端口号(55149)还是通过默认端口80(即纯URL)访问URL?
  • 您使用什么 URL 来访问托管在 IIS 上的 WCF 服务?
  • @BojanSkrchevski 我正在使用“localhost/WCFTest/ElectricReading.svc”通过 IIS 访问它。 (添加了别名 WCFTest 的应用程序并指向本地计算机上的 WCF 服务网站) - 如果我查看内容视图,我可以看到所有内容(web.config 和 .svc)
  • @RoBYCoNTe 你如何确保它配置正确? .svc 在 Handler Mappings 中,这就是我所需要的吗?

标签: c# visual-studio wcf iis


【解决方案1】:

发生这种情况的原因可能有很多。

其中一些可能包括:

  • 确保您将程序集上传到 Bin 文件夹中
  • 您已经在 IIS 上建立了一个网站,但您没有使用 正确的地址(确保端口正确)
  • 您的应用程序池没有为网站设置(如果您正在使用 .NET 4.0 您需要将应用程序池设置为 4.0 版)在 IIS 管理器中转到 ApplicationPools 并将池设置为您正在使用的 .NET 版本

尝试使用Fiddler。它应该记录它所做的调用,从而为您提供更多关于它没有找到的细节。

【讨论】:

    猜你喜欢
    • 2012-07-06
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多