wcf服务应用程序中缺少程序集引用

时间:2015-10-12 05:55:13

标签: c# asp.net wcf

我正在使用WCF服务创建一个Web应用程序。

我遵循的步骤是,

  

1)创建了一个新的WCF服务应用程序。

     

2)添加了新的WCF服务。

     

3)创建了一个类库。

     

4)添加了一个新课程,我将在下面提到这些代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using System.ServiceModel;


namespace ClassLibrary1
{
    public interface IUSerDetails
    {
        [OperationContract]
        string InsertUserDetails(UserDetails user);
    }

    [DataContract]
    public class UserDetails
    {
        string username = string.Empty;
        string password = string.Empty;
        string country = string.Empty;
        string email = string.Empty;
        [DataMember]
        public string UserName
        {
            get { return username; }
            set { username = value; }
        }
        [DataMember]
        public string Password
        {
            get { return password; }
            set { password = value; }
        }
        [DataMember]
        public string Country
        {
            get { return country; }
            set { country = value; }
        }
        [DataMember]
        public string Email
        {
            get { return email; }
            set { email = value; }
        }

    }
}

当我在Ln 13上进行鼠标悬停时,现在在[OperationContract]。它给出了一个错误。 您是否缺少using指令或程序集引用。

所以我以为我错过了命名空间

我补充说 使用system.ServiceModel; ,但同样在两行中都显示相同的错误。缺少什么?

3 个答案:

答案 0 :(得分:0)

根据链接https://social.msdn.microsoft.com/Forums/vstudio/en-US/96ffb6d7-8737-4c4d-8512-58967d0b69cd/wcf-on-godaddy-compiler-doesnt-recognize-operationcontract?forum=wcf,您需要进行两项更改。首先,将以下行添加到web.config文件的httpmodules部分:

<httpModules>



  <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>



</httpModules>

其次,将以下行添加到web.config文件的程序集部分:

  <assemblies>



    <add assembly="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>



    <add assembly="System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>



  </assemblies>

答案 1 :(得分:0)

将[ServiceContract]写在Line“interface IUSerDetails”

之上

答案 2 :(得分:0)

我使用Visual Studio for Mac在.NET Framework 4.7中创建新的控制台项目。

奇怪的是,它对来自[ServiceContract]的{​​{1}}属性感到非常满意,但是却抱怨System.ServiceModel属性:

[OperationContract]

检查OperationContractAttribute Class文档后,我发现需要Program.cs(10,10): Error CS0246: The type or namespace name 'OperationContactAttribute' could not be found (are you missing a using directive or an assembly reference?) (CS0246) Program.cs(10,10): Error CS0246: The type or namespace name 'OperationContact' could not be found (are you missing a using directive or an assembly reference?) (CS0246) 程序集。由于某些原因,System.ServiceModel.Primitives程序集无法通过“项目引用”在“程序包”和“ .NET程序集”选项卡中使用。

我从Project References中删除了所有程序集,并使用NuGet修复了上述错误,即:

System.ServiceModel.Primitives

除了将Install-Package System.ServiceModel.Primitives 添加到项目引用之外,它还重新添加了:

  • mscorlib
  • 系统
  • System.IdentityModel
  • System.Runetime.Serialization
  • System.ServiceModel
  • System.Xml

现在,我可以重新添加需要继续的其他程序集。希望这会有所帮助。

相关问题