gpt4 book ai didi

c# - 我如何使用 WCF 数据服务?

转载 作者:行者123 更新时间:2023-11-30 20:03:21 26 4
gpt4 key购买 nike

我已经创建了一个 wcf 服务,但我已经为它使用了 3 个项目;
1)ServiceLibrary(WCF库)
2)网络
3) 控制台测试客户端
我的 ServiceLibrary app.config 文件如下所示;

  <system.serviceModel>
<services>
<service name="MrDAStoreJobs.ServiceLibrary.AdvertisementService">
<clear />
<endpoint address="basic"
binding="basicHttpBinding" bindingConfiguration=""
contract="MrDAStoreJobs.ServiceLibrary.Interface.IAdvertisementService" />
<endpoint name="mexHttpBinding"
contract="IMetadataExchange"
binding="mexHttpBinding"
address="mex" />

<host>
<baseAddresses>
<add baseAddress="http://localhost:13758/" />
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false before deployment -->
<serviceMetadata httpGetEnabled="True" />
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel> <br />

现在,为了托管这个库,我在 Web 项目的 Web.Config 文件中完成了以下设置。
svc 文件名为 WcfDataService1.svc

    public class WcfDataService1 : DataService<AdvertisementService>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.UseVerboseErrors = true;
ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
}
<system.serviceModel>
<services>
<service name="MrDAStoreJobs.ServiceLibrary.AdvertisementService">
<clear />
<endpoint address="basic"
binding="basicHttpBinding" bindingConfiguration=""
contract="MrDAStoreJobs.ServiceLibrary.Interface.IAdvertisementService" />
<endpoint name="mexHttpBinding"
contract="IMetadataExchange"
binding="mexHttpBinding"
address="mex" />

<host>
<baseAddresses>
<add baseAddress="http://localhost:13758/WcfDataService1.svc" />
</baseAddresses>
</host>
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false before deployment -->
<serviceMetadata httpGetEnabled="True" />
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

现在,当我使用 WCF 测试客户端直接使用(ServiceLibrary 项目)测试此服务时,我看到以下内容并且一切正常; enter image description here
问题是当我尝试运行我的 Web 项目(我将其用作 wcf 服务的主机)时。然后转到控制台测试客户端并希望使用添加引用添加引用。我没有看到我的 GetSet 方法(如测试客户端) enter image description here为什么我看不到我的 IAdvertisementService 接口(interface)和方法
我必须将它部署到实际的 IIS 吗?

最佳答案

要使用 ASP.NET 开发服务,我们必须将 WebService 属性添加到类中,并将 WebMethodAttribute 添加到任何类方法中。

例子

[WebService] 
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}

要在 WCF 中开发服务,我们将编写以下代码:

[ServiceContract] 
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}


public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}

ServiceContractAttribute 指定一个接口(interface)定义一个 WCF 服务契约,OperationContract 属性表示接口(interface)的哪些方法定义了服务契约的操作。

实现服务契约的类在 WCF 中称为服务类型。

托管服务

ASP.NET Web 服务被编译成类库程序集,扩展名为 .asmx 的服务文件将包含该服务的代码。服务文件被复制到 ASP.NET 应用程序的根目录中,程序集将被复制到 bin 目录中。可以使用服务文件的 URL 访问该应用程序。

WCF 服务可以托管在 IIS 或 WindowsActivationService 中。

将服务类型编译成类库将扩展名为 .SVC 的服务文件复制到虚拟目录中,并将程序集复制到虚拟目录的 bin 子目录中。将 web.config 文件复制到虚拟目录中。

客户开发

ASP.NET Web 服务的客户端是使用命令行工具 WSDL.EXE 生成的。

WCF 使用 ServiceMetadata 工具 (svcutil.exe) 为服务生成客户端。

有关更多详细信息,请转到此链接 http://www.codeproject.com/Articles/139787/What-s-the-Difference-between-WCF-and-Web-Services

关于c# - 我如何使用 WCF 数据服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com