问题标签 [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.
c# - WCF UserNamePasswordValidator 是否需要检查 PrimaryIdentity.IsAuthenticated?
目前我有一个使用 aUserNamePasswordValidator
来验证客户端用户的服务。验证代码如下:
如您所见,当出现问题时,代码总是会抛出异常。
现在的问题 - 有什么理由我应该检查ServiceSecurityContext.Current.PrimaryIdentity.IsAuthenticated
我的函数内部是否为真OperationContract
?例如,
任何帮助将不胜感激。
c# - wcf 服务 OperationContract 中的 Cookie
是否可以在 wcf 服务的 OperationContract 中读取 cookie?我正在尝试在合同方法中读取 cookie 值,但它始终为空。如果我从 .aspx 页面读取相同的 cookie,则该值存在。有任何想法吗?
.net - 使用 webHttpBinding 从服务中获取 Gibberish 而不是 Hello World
这是一个应该返回“Hello World”字符串的简单示例。但是,浏览器会显示类似SGVsbG8gV29ybGQ=
. 从 oldskul 风格的服务返回纯文本的正确方法是什么?
请知道:
我无法返回字符串:三个 Unicode 字符将被自动添加到前面,旧的 HTTP 客户端将无法互操作。
我可以返回 a
p>Message
,但仍然必须保持解析功能来提取data
变量。AFAIK 不允许在同一方法签名中 混合Message
和键入。int
更新:这不是乱码,而是正确编码的响应。但是,格式不是我期望收到的。我已经发现(正如下面的先生所建议的那样)传输层消息格式的最终控制是通过Message
类获得的。但是,如果我确实使用了一个 - 我失去了解析请求(UriTemplate
属性)的可能性。因此,很高兴知道如何Message
与UriRequest
.
PS如果“干净”集成是不可能的 - 那么最优雅的解决方法是什么?请问是否有任何代码可以在我的实现中借用和使用的线幕后面完成?
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 作为动词。
有什么我忽略的吗?
wcf - 具有不同来源或操作 URL 的操作合同
我们的第三方 API 提供两种不同的 Web 服务,但具有相同的方法、模型。然而,它们仅在 URI 上有所不同(Web 服务路径、操作路径 [操作合同]。
所以我决定:
使用 VS 从他们的 wsdl 生成代码。
编辑命名空间以使用相同的“通用”而不是使用服务引用,而是使用 Reference.cs 编辑的代码。
创建一个新代理来处理要使用的服务的正确 URI(将 Reference.cs 包装在其中)。
现在,我遇到了“Method1”的问题,因为它们有不同的操作名称。有以下例外:
“服务器无法识别 HTTP Header SOAPAction 的值:http: //www.api.com/service/Method1 ”
我只是注意到它正确的操作名称是: http: //www.api.com/service1/Method1
现在的问题是,是否有任何配置或行为可用于更正每个服务的每个方法的操作名称?
或者只要他们继续为 API 的每个实现添加合约,我也应该继续为每个实现添加合约,并为此使用 ChannelFactory?
请帮忙,谢谢。
c# - WCF - 泛化操作字符串
我必须采用一些预定义的 WSDL(我不控制这些),并在我们的设备上公开它们以回复各种 SOAP/UPnP 请求。
无论如何,我已经完成了所有这些工作,但是问题出现了,因为我有一项可以在任意数量的频道上请求的服务。我会解释:
基本上,我正在尝试做的是(我意识到这种语法完全错误,但我认为它会明白这一点)是这样的:
我只是想将原始 Action 消息的某些部分作为参数传递给我正在实现的方法。
我想到的唯一可以实现它的方法是指定其他方法,我们将其称为 Dispatcher 并使用 Action="*",然后使用OperationContext.Current.IncomingMessageHeaders.Action
. 这似乎是一种非常阴暗的做事方式。我确信这里的主要障碍是我对 WCF 缺乏经验。
您能提供的任何帮助将不胜感激。
谢谢,
c# - WCF - 定制的 WDSL 生成
我花了几个小时尝试在 wsdl 生成中进行一些自定义,但没有结果。我陷入困境主要是因为我找不到我想做的明确示例(我可能错过了一些东西)。
言归正传:我想自定义生成的 WSDL。我发现的最相关的文章是关于向现有服务添加属性以添加行为,例如这篇文章。
我想要做的是能够分析OperationContract并在需要时生成和附加 xsd。
我的问题是:
- 如何在不添加属性的情况下添加或拦截现有的 WSDL 生成?
- 如何在配置文件中配置此组件?
我不想改变svcutil.exe使用元数据的方式,只需在生成的 wsdl 中添加一些 ComplexType 'on-the-fly'。
感谢您的建议!
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。
谢谢!
杰弗里·凯文·普瑞
wcf - WCF OperationContract - Action 和 ReplyAction 的意义何在?
在这种情况下,Action
and的意义ReplyAction
何在?
编辑:我应该澄清我的问题......
如果我不指定这些部分,我的 wsdl 会有什么不同?它不会只是使用命名空间、服务名称和操作名称的某种组合吗?
wcf - WCF 泛型 - 为什么 DataContract 和 CollectionDataContract 允许格式化命名,但不允许 DataMember、OperationContract 或 ServiceContract?
基本上正如标题所说:
所以,你有它......什么有效,什么无效......但问题是......为什么?显然,.NET 能够在使用DataContract
andCollectionDataContract
并声明类型时创建一个具体类型并格式化名称(即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