配置名称的svcutil.exe问题

时间:2011-12-09 09:10:23

标签: svcutil.exe

我正在通过SvcUtil.exe更新我的wcf服务引用。 命令如下:

SvcUtil.exe http://localhost:50886/Service1.svc /n:*,ClassLibrary2.ServiceReference1 / o:服务引用\ ServiceReference1 \ Reference.cs /ct:System.Collections.Generic.List`1,mscorlib,Version = 2.0.0.0 ,Culture = neutral,PublicKeyToken = b77a5c561934e089 /config:app.config

我的wcf代码如下:

=============================================== ===============

namespace WcfService1
{
    [ServiceContract]
    [ServiceKnownType(typeof(Dictionary<string, string>))]
    public interface **IService1**
    {
        [OperationContract]
        string GetData(int value);
        // TODO: Add your service operations here
        [OperationContract]
        string Hello(string value);
    }
}



namespace WcfService1
{

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

        public string Hello(string value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
}

我在我的类库项目中使用此服务,该项目的名称为ClassLibrary1。当我通过visual studio更新此服务时,在Reference.cs中我得到以下声明:

[System.ServiceModel.ServiceContractAttribute(ConfigurationName="**ServiceReference1.IService1**")]
public interface IService1

但是当我通过svcutil更新服务时,我得到了以下声明:

[System.ServiceModel.ServiceContractAttribute(ConfigurationName="**ClassLibrary2.ServiceReference1.IService1**")]
public interface IService1

不同之处在于配置名称。我不明白我应该在svcutil中使用哪个命令来设置配置名称,就像 ServiceReference1.IService1 一样?

请帮忙。

1 个答案:

答案 0 :(得分:1)

只需将[ServiceContract]更改为[ServiceContract(Name="ServiceReference1.IService1", ConfigurationName="ServiceReference1.IService1")]即可。请参阅this block post