【问题标题】:Unable to get WCF services to run on shared server using IIS无法让 WCF 服务在使用 IIS 的共享服务器上运行
【发布时间】:2012-12-18 19:13:29
【问题描述】:

我无法让 WCF 服务在使用 IIS 的共享服务器上运行。

我尝试了几个教程: http://technologyriver.blogspot.com/2012/02/prerequisites-check-windows-7.html http://msdn.microsoft.com/en-us/library/ms733766.aspx

我已阅读有关执行命令行指令以在 IIS 上启用 WCF 支持的博客。 但是,托管公司拒绝在他们的盒子上运行命令。

这些服务在我的开发机器上运行良好。 但是,我就是无法让服务在远程服务器上运行。

单击 svc 文件时出现以下错误:

HTTP 错误 404.3 - 未找到

由于扩展配置,无法提供您请求的页面。如果页面是脚本,则添加处理程序。如果要下载文件,请添加 MIME 映射。*

svc 文件:

<% @ServiceHost Language=C# Debug="true" Service="MyService" Factory="MyServiceHostFactory" CodeBehind="~/App_Code/Service.cs" %>

Web.config:

<service name="MyService" behaviorConfiguration="MyServiceBehavior">
    <endpoint contract="IMyService" binding="basicHttpBinding">
      <identity>
        <dns value="http://www.mydomain.com" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

    <host>
      <baseAddresses>
        <add baseAddress="http://www.mydomain.com:8732/Services/Service/" />
      </baseAddresses>
    </host>
  </service>

Service.cs:

using System;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;

// A WCF service consists of a contract (defined below as IMyService, DataContract1), 
// a class which implements that interface (see MyService), 
// and configuration entries that specify behaviors associated with 
// that implementation (see <system.serviceModel> in web.config)

[ServiceContract()]
public interface IMyService
{
    [OperationContract]
    string MyOperation1(string myValue1);
    [OperationContract]
    string MyOperation2(DataContract1 dataContractValue);
}

public class MyService : IMyService
{
    public string MyOperation1(string myValue1)
    {
        return "Hello: " + myValue1;
    }
    public string MyOperation2(DataContract1 dataContractValue)
    {
        return "Hello: " + dataContractValue.FirstName;
    }
}

[DataContract]
public class DataContract1
{
    string firstName;
    string lastName;

    [DataMember]
    public string FirstName
    {
        get { return firstName; }
        set { firstName = value; }
    }
    [DataMember]
    public string LastName
    {
        get { return lastName; }
        set { lastName = value; }
    }
}

public class MyServiceHostFactory : ServiceHostFactoryBase
{
    protected virtual ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        // Specify the exact URL of your web service
        Uri webServiceAddress = new Uri("http://www.mydomain.com/MyService.svc");

        MyServiceHost webServiceHost = new MyServiceHost(serviceType, webServiceAddress);
        return webServiceHost;
    }

    public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
    {
        throw new NotImplementedException();
    }
}

public class MyServiceHost : ServiceHost
{
    public MyServiceHost(Type serviceType, params Uri[] baseAddresses)
        : base(serviceType, baseAddresses)
    { }

    protected override void ApplyConfiguration()
    {
        base.ApplyConfiguration();
    }
}

【问题讨论】:

  • 您尝试访问的网址是这种格式吗? “mydomain.com:8732/Services/Service/MyService.svc”?
  • 我只是点击网站目录下的svc文件。
  • 我什至重新开始并采用了 WCF 默认项目应用程序并发布了它。它在我的本地机器上按原样运行简单的默认服务。但是,将其发布到远程服务器时,我收到了相同的错误消息。

标签: wcf iis iis-7


【解决方案1】:

我不得不切换主机。

我最初使用的是 DiscountASP.Net,但他们拒绝了我确保 WCF 设置已启用的请求,并告诉我需要聘请开发人员或遵循 MS IIS 规范。 (P.S. 他们不知道我实际上是一名 SDET。)

因此,我不得不切换到另一个提供商(即 Winhost)。 现在一切正常,我不必做任何疯狂的 webconfig 更改或 ServiceHostFactory 编码废话,以前的主机希望我这样做,但没有成功。

我花了 5 天时间在他们的技术支持下重新开票,直到我最终切换到一家真正支持 WCF 服务的托管公司。

感谢 Winhost 结束这个可怕的噩梦!

【讨论】:

    【解决方案2】:

    这似乎是远程服务器上的访问/配置问题。

    尝试检查已部署服务的以下区域。

    • WCF 服务的绑定配置正确,DNS 和端口(默认为 80)
    • 服务的身份验证模式(通过WSDL允许匿名访问浏览器)
    • 授予网站的权限(目录和用户权限)

    如果它们都不起作用,那么您能否列出您在部署服务时遵循的步骤?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      • 2016-02-21
      相关资源
      最近更新 更多