问题标签 [servicecontract]

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 投票
1 回答
276 浏览

wcf - 在没有合约接口和 DTO 的情况下从客户端调用 WCF 服务

我有需要消耗的第 3 方 wcf soap 服务,所以我发现了一种在内存中生成代码并使用简单输入参数调用服务的方法。我想对复杂的论点做同样的事情,任何人都可以帮助我了解如何实现这一点。或者任何人都可以请我指出正确的方向。

在此先感谢,帕万

0 投票
1 回答
1583 浏览

certificate - 具有 System.Data.Services.IRequestHandler 合同的数据服务端点抛出错误

尝试使用 System.Data.Services.IRequestHandler 合同创建端点时收到以下错误

无法加载操作“ProcessRequestForMessage”,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。当使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。

我发现了另外两个与此错误有关的问题(此处此处),但它们都没有令人满意的解决方案。我提取了Northwind 示例并能够重现该问题。

简化的 web.config 文件:

.svc 文件:

我可以通过用我自己的合同替换 System.Data.Services.IRequestHandler 合同并删除错误消息所抱怨的参数来摆脱错误。

引发错误的内置 ServiceContract:

我的 ServiceContract,它不会抛出错误(但也没有真正起作用,因为我没有复制所有DataService<T>功能):

当我尝试在端点中使用内置 ServiceContract 时,我很困惑为什么会抛出此错误。我对数据服务相当陌生,所以我确信我错过了一些对其他人来说似乎很明显的东西。

谢谢

编辑:
归根结底,我的目标是使用证书身份验证,所以如果在解决这个问题时有办法做到这一点,我愿意接受。我一直在使用这个例子

0 投票
2 回答
144 浏览

wcf - 是否可以在不必运行实际服务的情况下对服务合同进行单元测试?

我在使用 WCF 服务(实际上是服务客户端解决方案)的应用程序上工作。

出现的问题是,当我们进行一些重构时,结果发现一些服务合同变得无效。在服务和应用程序运行之前,这不会显示。

现在,我想编写测试用例来简单地测试服务合同,这样当它们不匹配时,测试用例就会失败。这是否可以在不必运行实际服务的情况下完成?

也就是说,我可以在测试用例中如何模拟服务部分并同时调用客户端调用吗?

0 投票
3 回答
22983 浏览

c# - WCF 服务在 2 个不同的服务合同上公开 2 个端点

我有一个 WCF 服务,我正在尝试对其进行配置,以便它公开 2 个端点,在不同的 URL 下引用不同的功能。

我想要的是Service1,公开方法 A、B、C 和Service2,公开方法 D、E。我希望能够同时浏览localhost/WebServiceName/Service1/Service.svclocalhost/WebServiceName/Service2/Service .svc

引用localhost/WebServiceName/Service1/Service.svc的其他应用程序应该只看到包含方法 A、B 和 C 的接口。它们不应该看到有关Service2接口的任何内容。对于Service2也是如此。

到目前为止,我已经在我的 WCF 服务中定义了两个接口I_Service1I_Service2

我在 web.config 中添加了两个端点,如下所示:

在 enpoint 中使用完整地址的建议来自这里:IIS 下的多个端点

但是,我仍然无法浏览localhost/WebServiceName/Service1/Service.svc。我收到:

我可以成功浏览localhost/WebServiceName/Service.svc并且 wsdl 包括方法 A、B、C、D、E。但这在我想要的行为中应该是错误的。

有什么我错过的吗?

更新:在这篇文章http://allen-conway-dotnet.blogspot.ro/2011/09/exposing-multiple-binding-types-for.html之后,我为这些端点创建了两个不同的合同服务。但目前我在浏览它时只看到Service1 。Service2显然不存在(出现与 HTTP 404 错误相关的问题)。

配置如下:

0 投票
1 回答
118 浏览

wcf - WCF 4.0 中是否仍会自动生成客户端服务合同?

我有一个 net.tcp 绑定示例,它显然可以追溯到 .NET 2.0 运行时版本。WCF Net.TCP绑定示例的客户端代码有一个接口标记为“System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "2.0.xx") 左右。

它还定义了一些请求和响应类,其中请求显然包装了服务操作合同的参数,而响应类包装了结果/返回值。它还为服务定义了一个控制器类。

现在,在带有 net.tcp 绑定的 winform 托管的 WCF 中,我找不到自己自动生成这些类的方法。我想知道,这是一种古老的做事方式吗?是必需的吗?或者我可以在客户端应用程序中包含对包含服务的 DLL 的引用吗?

我做了一些更改,但现在没有任何效果,我想知道我是否可以摆脱那些“自动生成”的类(或者如果不能,我该如何重新生成它们?)。

我在 Windows 7 Ultimate 下使用 Visual Studio 2012 Ultimate for .NET 4.5。我的应用程序是两个使用 WCF 和 netTCP 绑定的 winforms(客户端和服务器)。

0 投票
1 回答
151 浏览

c# - 将 WCF 协议转换为类

我有具有类似属性的 WCF ServiceContract:

我在客户端也需要同样的东西,但生成的协议给了我:

get_P1() 和 set_P1(int) 方法,所以我需要每次手动创建另一个类接口:

我怎样才能自动化这样的类创建?

原因:我只想编辑界面和实现,其他的东西我想自动生成。

0 投票
0 回答
1554 浏览

wcf - WCF - 服务合同中的接口参数

我有一个将由 .NET 客户端使用的 WCF 服务。我想在操作合约中使用一个接口作为参数。我还没有完全实现服务到能够测试这种方法的地步,如果结果不可行,我不想花很多时间在它上面。

这是这样做的正确方法吗?

我查看了这篇文章:

在 wcf 服务中使用类接口作为参数

它看起来像我正在尝试完成的工作,但是如果我尝试在接口上使用 KnownType 属性,则会出现编译错误,因此我改用了 ServiceKnownType 属性。

0 投票
1 回答
37 浏览

wcf - WCF 绑定过滤器选项

是否有可能我们可以将(OperationContract)一个合同的少数方法暴露ServiceContract)给一个绑定,而将同一合同的WCF其余方法暴露给另一个绑定?(OperationContract)(ServiceContract)

0 投票
3 回答
769 浏览

c# - 使用 WCF,如何确保只有受信任的程序集调用我的服务?

我有一个简单的服务合同,定义为:

它在本地 WCF 服务中实现(通过net.pipe://地址访问)。

我需要知道谁在调用该服务。

IHello.Echo基本上,出于安全原因,我需要拒绝任何未经我签名的程序集发出的调用。该Hello方法不应该对不受信任的调用者可用。

我依稀记得在旧的 .NET 1 远程处理时代,我们可以遍历堆栈并检查调用者的身份。但是我怎么能用 WCF 做到这一点呢?

0 投票
1 回答
664 浏览

c# - WCF 接口上 UriTemplate 的更改导致整个服务失败。

这是我第一次尝试通过托管在 Windows 服务中的 WCF 提供服务。我注意到,如果我在 UriTemplate 中做错了什么,它会完全破坏一切,我不知道为什么。

例子:

在第一个代码示例中,一切正常。该服务等待我定义的基地址并返回我期望的信息。

在这个示例中,我将所有内容更改UriTemplate = "/GetDetail?id={id}"UriTemplate = "/GetDetail/{id}"中断。该服务甚至不等待我配置的基地址。

我不明白这种变化如何导致一切都失败?它不应该只是无法处理 GetDetail 调用而不破坏整个系统吗?

还要对此进行扩展,如何将日志记录添加到我的服务中。