问题标签 [wcf-configuration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
20274 浏览

.net - Silverlight+WCF 异常:期望应用程序/soap+xml,收到文本/xml

我有一个 Silverlight 应用程序,我想在其中调用 WCF 服务。调用服务时,我从服务器收到以下响应:

415 无法处理消息,因为内容类型为 'text/xml; charset=utf-8' 不是预期的类型 'application/soap+xml; 字符集=utf-8

有没有人遇到过这个问题?有谁知道我需要调整哪些配置设置?任何有关如何解决此问题的信息将不胜感激。

0 投票
6 回答
12180 浏览

asp.net - 如何在单独的 dll 项目中配置 WCF

我正在开发一个将使用许多 Web 服务的 Web 应用程序 (ASP.NET 3.5)。我为每个 Web 服务创建了一个单独的 dll 项目:这些项目包含服务引用和客户端代码。

但是,调用网站必须在其 web.config 中包含<system.serviceModel>信息(<bindings><client>节点),即使此信息也在 dll 的 app.config 文件中!我尝试将 serviceclass.dll.config 复制到网站的 bin 目录,但这没有帮助。

有没有办法集中配置 WCF 客户端?

0 投票
3 回答
12778 浏览

wcf - WCF:配置已知类型

我想知道如何在 WCF 中配置已知类型。例如,我有一个Person类和一个Employee类。Employee类是Person类的子类。两个类都标有一个[DataContract]属性。

我不想硬编码类的已知类型,例如[ServiceKnownType(typeof(Employee))]在 Person 类中放置一个,以便 WCF 知道 Employee 是 Person 的子类。

现在,我在主机的 App.config 中添加了以下 XML 配置:

我编译它,运行主机,在客户端添加服务引用并添加一些代码并运行客户端。但是出现了错误:

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数时出现错误 http://www.herbertsabanal.net:person。InnerException 消息是“第 1 行位置 247 中的错误。元素 'http://www.herbertsabanal.net:person' 包含 'http://www.herbertsabanal.net/Data:Employee' 数据合同的数据。反序列化器不知道映射到该合约的任何类型。将与 'Employee' 对应的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。

以下是数据合同:

顺便说一句,我的服务没有使用类库(WCF 类库或非 WCF 类库)。我只是在宿主项目中对其进行了简单的编码。

我想配置文件肯定有问题(请参阅上面的配置文件)。或者我一定错过了什么。任何帮助将不胜感激。

0 投票
5 回答
23988 浏览

.net - 如何以编程方式配置 WCF 已知类型?

我的客户端/服务器应用程序使用 WCF 进行通信,这非常棒。然而,当前架构的一个缺点是我必须对某些传输类型使用已知类型配置。我使用的是内部 Pub/Sub 机制,这个要求是不可避免的。

问题是很容易忘记添加已知类型,如果你这样做了,WCF 会默默地失败,几乎没有关于出错的线索。

在我的应用程序中,我知道要发送的类型集。我想以编程方式执行配置,而不是通过App.config当前包含以下内容的文件以声明方式执行配置:

相反,我想做这样的事情:

有人可以解释一下我该怎么做吗?

编辑请理解,我试图在运行时动态设置已知类型,而不是在配置中以声明方式或在源代码中使用属性。

这基本上是关于 WCF API 的问题,而不是样式问题。

编辑 2 这个 MSDN 页面页面状态:

您还可以将类型添加到通过 DataContractSerializer 的 KnownTypes 属性访问的 ReadOnlyCollection。

不幸的是,这就是它所说的全部,并且鉴于 KnownTypes 是一个只读属性,并且该属性的值是 a ,它并没有多大意义ReadOnlyCollection

0 投票
2 回答
5306 浏览

wcf - WCF 客户端配置:如何检查端点是否在配置文件中,如果没有则回退到代码?

希望制作一个通过 WCF 将序列化消息对象发送回服务器的客户端。

为了让最终开发人员(不同部门)更容易,最好他们不需要知道如何编辑他们的配置文件来设置客户端数据。

也就是说,端点也没有嵌入/硬编码到客户端中也很棒。

在我看来,混合场景是最容易推出的解决方案:

IF(在配置中描述)使用配置文件 ELSE 回退到硬编码端点。

我发现的是:

  1. new Client();如果未找到配置文件定义,则失败。
  2. new Client(binding,endpoint);作品

所以:

但是有没有办法检查(除了try/catch)来查看配置文件是否声明了一个端点?

如果在配置文件中定义但配置不正确,上述内容是否也会失败?区分这两种情况会很好吗?

0 投票
1 回答
803 浏览

wcf-configuration - 是否有任何 WCF 配置工具可以使工作更轻松

是否有任何工具不仅需要对每个配置选项和细微差别有深入而深入的了解,而且只需要最少的输入即可设置应用程序。类似于根据这些简单输入生成 XML 配置的向导。我不关心安全我只需要服务工作。理想情况下,该工具也能够设置 IIS6,或者至少使用一组给定的选项,它会生成我需要在 IIS 中完成的步骤列表。

Microsoft 服务配置编辑器并不比直接编辑 XMl 更好。我确实找到了一个有正确想法的网站,但它无法解决我的简单安装问题。(http://www.noemax.com/support/wcf_binding_configuration_wizard.html)。

有没有什么东西可以让一些约定在这堆积如山的配置中发挥作用?

0 投票
4 回答
27126 浏览

c# - servicePrincipalName 应该有什么值?

我正在尝试在我的服务上设置客户端模拟。

我需要为我的服务端点的 servicePrincipalName 设置一个值

我正在看这篇MSDN 文章,但仍然无法弄清楚

我的服务托管在我们称为 ServerName1 的服务器上的控制台应用程序中。
Uri 是:net.tcp://ServerName1:9990/TestService1/.

我的 servicePrincipalName 具体应该是什么?

我试过了,没有喜悦:

0 投票
1 回答
17036 浏览

.net - 在控制台应用程序中托管 WCF 服务时出现 IMetadataExchange MEX 终结点错误

我有 WCF 服务。我正在尝试在控制台应用程序中托管服务。

我正在遵循这里的所有指示。

现在一切编译正常,但我在运行时遇到异常。

在服务索引器实施的合同列表中找不到合同名称“IMetadataExchange”。将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost 以启用对此协定的支持。

现在在指示中,我被指示添加

我的 WCF 服务或主机控制台应用程序中的任何地方都没有 IMetadataExchange。

异常从何而来?我缺少参考吗?

这是我的控制台程序

我的 WCF 服务只有一个带有合同的接口,然后是 myservice 类中的实现。

下面是我的整个 app.config。

0 投票
3 回答
23872 浏览

c# - WCF:使用带有消息契约的流式传输

我正在尝试将 WCF 流与消息合同一起使用,因为除了流本身之外我还需要其他参数。

基本上我正在创建一个文件上传和下载服务,上面有一些额外的逻辑。

不幸的是,当我尝试从浏览器访问服务以检查一切是否正常时,我收到以下错误:

“/”应用程序中的服务器错误。合同“IFileTransferService”中的“UploadFile”操作使用具有 SOAP 标头的 MessageContract。None MessageVersion 不支持 SOAP 标头。

不幸的是,谷歌搜索并没有产生任何对我有帮助的重要结果。你们能帮帮我吗?这里是服务的详细信息(由于空间原因,我删除了下载部分)。

我尝试同时使用 basichttpbinding 和 customhttp 绑定,但效果不佳:

更新:在线阅读文档似乎确实应该可以使用 MessageContracts 进行流式传输。例如参考 MSDN(大数据和流):

流传输的编程模型

流的编程模型很简单。要接收流数据,请指定具有单个 Stream 类型输入参数的操作协定。要返回流数据,请返回 Stream 引用。[...]这条规则同样适用于消息合约。如以下消息协定所示,您的消息协定中只能有一个主体成员,即流。如果您想与流通信附加信息,则此信息必须是在消息头中携带的。消息正文专为流内容保留。

我还看到人们完成文件上传和下载服务的博客文章与我试图放在一起的内容非常相似(例如这里)。

更新 2 我尝试创建一个小型控制台并使用 basicHttpBinding 自行托管服务,它的工作原理就像一个魅力。我开始相信问题可能出在 IIS 上。任何想法?

更新 3 查看我自己的答案。

0 投票
1 回答
4058 浏览

c# - 如何以编程方式在托管服务上设置服务主体名称

要使用配置文件执行上述操作,我会这样做:

但是如何将它添加到下面的代码中?