gpt4 book ai didi

c# - wcf 服务不工作 - 未能添加服务

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:49 25 4
gpt4 key购买 nike

我正在尝试制作我的第一个 WCF 服务。我遇到了问题——我已经编写了一个结构、一个类和一些方法。我的服务契约(Contract)如下所示:

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

namespace WebshopReports
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IReports" in both code and config file together.
[ServiceContract]
public interface IReports
{
[OperationContract]
List<Category> getReportCategories(string dir);

[OperationContract]
List<CReport> getReportList(Category category);

}
}

当我在 visual studio 中使用测试客户端运行它时,我得到以下信息:

Failed to add a service. Service metadata may not be accessible. Make sure your service is running and exposing metadata.

我确定它与我的 web.config 文件有关。它在下面。有人可以帮助我,因为我不确定如何配置 web.config:

<?xml version="1.0"?>
<configuration>

<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above 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="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

</configuration>

奇怪的是,如果我将 CReport 从类更改为结构,它将起作用。

最佳答案

根据我们的经验,导致此类故障的主要原因有两个:

1) 服务器端序列化。这可能是由于类不可序列化或尝试在不使用 KnownType 属性的情况下序列化抽象类。

2) 由于 WCF 混淆了具有相同通用签名的多个 Collection 或 Dictionary 类型类,因此在客户端进行序列化。

根据您的描述,第 1 项听起来像是您的问题。

解决此类 WCF 问题的最佳方法是将以下 block 添加到 web.config 文件的配置部分:

  <system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\WebTrace.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>

一旦您尝试使用界面但失败,双击 svclog 文件,这将打开 WCF 的日志查看器工具。发生的任何异常都将以红色突出显示,您可以深入研究它们以查看导致 WCF 服务失败的具体问题。

关于c# - wcf 服务不工作 - 未能添加服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8497540/

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