问题标签 [operationcontract]

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 回答
1256 浏览

c# - WCF UserNamePasswordValidator 是否需要检查 PrimaryIdentity.IsAuthenticated?

目前我有一个使用 aUserNamePasswordValidator来验证客户端用户的服务。验证代码如下:

如您所见,当出现问题时,代码总是会抛出异常。

现在的问题 - 有什么理由我应该检查ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated我的函数内部是否为真OperationContract?例如,

任何帮助将不胜感激。

0 投票
2 回答
1181 浏览

c# - wcf 服务 OperationContract 中的 Cookie

是否可以在 wcf 服务的 OperationContract 中读取 cookie?我正在尝试在合同方法中读取 cookie 值,但它始终为空。如果我从 .aspx 页面读取相同的 cookie,则该值存在。有任何想法吗?

0 投票
3 回答
561 浏览

.net - 使用 webHttpBinding 从服务中获取 Gibberish 而不是 Hello World

这是一个应该返回“Hello World”字符串的简单示例。但是,浏览器会显示类似SGVsbG8gV29ybGQ=. 从 oldskul 风格的服务返回纯文本的正确方法是什么?

请知道:

  1. 我无法返回字符串:三个 Unicode 字符将被自动添加到前面,旧的 HTTP 客户端将无法互操作。

  2. 我可以返回 a Message,但仍然必须保持解析功能来提取data变量。AFAIK 不允许在同一方法签名中 混合Message和键入。int

    p>

更新:这不是乱码,而是正确编码的响应。但是,格式不是我期望收到的。我已经发现(正如下面的先生所建议的那样)传输层消息格式的最终​​控制是通过Message类获得的。但是,如果我确实使用了一个 - 我失去了解析请求(UriTemplate属性)的可能性。因此,很高兴知道如何MessageUriRequest.

PS如果“干净”集成是不可能的 - 那么最优雅的解决方法是什么?请问是否有任何代码可以在我的实现中借用和使用的线幕后面完成?

0 投票
2 回答
1050 浏览

android - IIS 似乎认为 Android HttpPost 是 GET

更新:这些问题是由执行 301 重定向的反向代理引起的。将 url 更改为重定向的目标解决了该问题。

我正在努力从 android 向网络服务发出 POST 请求。

我有一个在 IIS7 上运行的 Web 服务,其内容如下:

当我从 Firefox 向此 url 发送 POST 请求时,它按预期工作。

当我使用以下代码从 Android 设备发出请求时:

我收到 Method Not Allowed 405 响应,并且在查看 IIS 日志时,对该 url 的请求显示为“GET”。

如果我将请求的目标更改为回显 $_SERVER['REQUEST_METHOD'] 的 PHP 脚本,则输出为 POST。

Web 服务的 web.config 具有 GET、HEAD 和 POST 作为动词。

有什么我忽略的吗?

0 投票
1 回答
741 浏览

wcf - 具有不同来源或操作 URL 的操作合同

我们的第三方 API 提供两种不同的 Web 服务,但具有相同的方法、模型。然而,它们仅在 URI 上有所不同(Web 服务路径、操作路径 [操作合同]。

所以我决定:

  1. 使用 VS 从他们的 wsdl 生成代码。

  2. 编辑命名空间以使用相同的“通用”而不是使用服务引用,而是使用 Reference.cs 编辑的代码。

  3. 创建一个新代理来处理要使用的服务的正确 URI(将 Reference.cs 包装在其中)。

现在,我遇到了“Method1”的问题,因为它们有不同的操作名称。有以下例外:

“服务器无法识别 HTTP Header SOAPAction 的值:http: //www.api.com/service/Method1

我只是注意到它正确的操作名称是: http: //www.api.com/service1/Method1

现在的问题是,是否有任何配置或行为可用于更正每个服务的每个方法的操作名称?

或者只要他们继续为 API 的每个实现添加合约,我也应该继续为每个实现添加合约,并为此使用 ChannelFactory?

请帮忙,谢谢。

0 投票
2 回答
3158 浏览

c# - WCF - 泛化操作字符串

我必须采用一些预定义的 WSDL(我不控制这些),并在我们的设备上公开它们以回复各种 SOAP/UPnP 请求。

无论如何,我已经完成了所有这些工作,但是问题出现了,因为我有一项可以在任意数量的频道上请求的服务。我会解释:

基本上,我正在尝试做的是(我意识到这种语法完全错误,但我认为它会明白这一点)是这样的:

我只是想将原始 Action 消息的某些部分作为参数传递给我正在实现的方法。

我想到的唯一可以实现它的方法是指定其他方法,我们将其称为 Dispatcher 并使用 Action="*",然后使用OperationContext.Current.IncomingMessageHeaders.Action. 这似乎是一种非常阴暗的做事方式。我确信这里的主要障碍是我对 WCF 缺乏经验。

您能提供的任何帮助将不胜感激。

谢谢,

0 投票
1 回答
4378 浏览

c# - WCF - 定制的 WDSL 生成

我花了几个小时尝试在 wsdl 生成中进行一些自定义,但没有结果。我陷入困境主要是因为我找不到我想做的明确示例(我可能错过了一些东西)。

言归正传:我想自定义生成的 WSDL。我发现的最相关的文章是关于向现有服务添加属性以添加行为,例如这篇文章

我想要做的是能够分析OperationContract并在需要时生成和附加 xsd。

我的问题是:

  • 如何在不添加属性的情况下添加或拦截现有的 WSDL 生成?
  • 如何在配置文件中配置此组件?

我不想改变svcutil.exe使用元数据的方式,只需在生成的 wsdl 中添加一些 ComplexType 'on-the-fly'。

感谢您的建议!

0 投票
2 回答
1070 浏览

c# - WCF Rest .svc 在直接查看时会抛出错误,但可以正常工作

我有一个带有两个 OperationContracts 的 WCF 休息服务,如下所示:

当我访问http://localhost/rest.svc/ping/它工作正常,如果我访问http://localhost/rest.svc/files/它工作正常。

但是,如果我直接访问http://localhost/rest.svc,则会抛出以下错误:

System.InvalidOperationException:调用 WSDL 导出扩展时引发异常:System.ServiceModel.Description.DataContractSerializerOperationBehavior 合同:http ://tempuri.org/:IRest ----> System.InvalidOperationException:操作“AddFile”无法加载,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。当使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。

我了解该错误,但想知道如何修复/抑制它,以便显示默认的 WCF 端点页面。我只是将 WCF 用于 REST。

谢谢!

杰弗里·凯文·普瑞

0 投票
2 回答
21331 浏览

wcf - WCF OperationContract - Action 和 ReplyAction 的意义何在?

在这种情况下,Actionand的意义ReplyAction何在?


编辑:我应该澄清我的问题......

如果我不指定这些部分,我的 wsdl 会有什么不同?它不会只是使用命名空间、服务名称和操作名称的某种组合吗?

0 投票
2 回答
1685 浏览

wcf - WCF 泛型 - 为什么 DataContract 和 CollectionDataContract 允许格式化命名,但不允许 DataMember、OperationContract 或 ServiceContract?

基本上正如标题所说:

所以,你有它......什么有效,什么无效......但问题是......为什么?显然,.NET 能够在使用DataContractandCollectionDataContract并声明类型时创建一个具体类型并格式化名称(即GenericItem<Foo>SpecialCollection<Foo>. 那么为什么不DataMember也能够格式化呢?

我可以按照上面留下的方式(ServiceContract/OperationContract排序)来理解,但我不明白的是,当你给它一个具体的类型时,操作仍然无法正常工作:

再次,为什么?显然,我在这里声明了一个具体的 Foo 类型,这意味着 IGenericService 是一个 IGenericService<Foo> 所以不应该格式化 OperationContract 名称,因为它知道类型吗?


更新:

我只记得为什么我对无法使用通用格式的 ServiceContract 感到不安......当我实现服务时,我给它一个具体的类型......


我为此创建了一个Microsoft Connect请求。如果您希望将此功能用于其他属性,请对其进行投票。http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2327048-enable-generics-for-datamemberattribute-serviceco