gpt4 book ai didi

c# - 类似于 ASP.NET 中的 WCF 服务模拟

转载 作者:太空宇宙 更新时间:2023-11-03 13:54:17 24 4
gpt4 key购买 nike

我在同一个 web.config 中有一个带有 ASP.NET 站点和 WCF 服务的 WebService。到目前为止,我能够通过设置在 WCF 服务中使用 ASP.NET 模拟

<system.web>
<compilation targetFramework="4.0" debug="false"/>
<!-- switch custom errors of-->
<identity impersonate="true"/>
<customErrors mode="Off"/>
</system.web>

但是,现在(由于其他原因-> ASP.NET 部分的 Cookieless session 状态)我必须设置

aspNetCompatibilityEnabled="true" 

选项为假。有了这个,我松开了 WCF 服务的 ASP.NET 模拟。我的 WCF 服务之一需要模拟服务器上的 IO 操作......我想知道如何通过直接在 WCF 服务配置上定义它来获得与之前相同的模拟。

我试过(不成功)的是设置

[OperationBehavior(Impersonation = ImpersonationOption.Required)]

关于在WCF服务中实现方法然后指定

<endpoint address="" binding="wsHttpBinding" contract="IService">
<identity>
<servicePrincipalName value="HOST/YourMachineName" />
<dns value="" />
</identity>
</endpoint>

在 web.config 中(显然我的服务具有正确的值),如 http://msdn.microsoft.com/en-us/library/ff650591.aspx 中所述.

但是,此后无法再调用 WCF 服务...它告诉我 WsHttpBinding 没有为契约(Contract)提供身份。

我是不是漏掉了什么重要的东西?

编辑:错误信息的翻译:

:契约(Contract)操作“{0}”需要 Windows 身份才能自动模拟。表示调用方的 Windows 标识不是通过绑定(bind)(“{1}”、“{2}”)为协定(“{3}”、“{4}”)提供的。

(原来的错误信息是德语...)

最佳答案

尝试添加与此类似的内容

<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="DelegationBehaviour">
<clientCredentials>
<windows allowNtlm="false" allowedImpersonationLevel="Delegation"></windows>
</clientCredentials>
<dataContractSerializer maxItemsInObjectGraph="4194304"></dataContractSerializer>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_SampleWebService" >
<readerQuotas maxArrayLength="16384" maxBytesPerRead="4096" maxDepth="32" maxNameTableCharCount="16384" maxStringContentLength="8192"></readerQuotas>
<security mode="TransportCredentialOnly">
<message algorithmSuite="Default" clientCredentialType="UserName"></message>
<transport clientCredentialType="Windows" proxyCredentialType="None" realm=""></transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://server/WebServices/Service/Service.svc" behaviorConfiguration="DelegationBehaviour" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_SampleWebService" contract="SampleWS" name="BasicHttpBinding_SampleEndpoint"></endpoint>
</client>
</system.serviceModel>

这是服务端代码

 <system.serviceModel>
<services>
<service behaviorConfiguration="CustomBehavior" name="CustomWebService">
<endpoint address="" behaviorConfiguration="" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_Service" contract="WebService"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding_Service" maxReceivedMessageSize="4194304" receiveTimeout="00:30:00">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="CustomBehavior">
<dataContractSerializer maxItemsInObjectGraph="4194304" ignoreExtensionDataObject="True"/>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug httpHelpPageEnabled="true" includeExceptionDetailInFaults="true"/>
<serviceAuthorization impersonateCallerForAllOperations="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

以及通过我们的 WebMethods 获得这些

<WebMethod(), OperationContract(), OperationBehavior(Impersonation:=ImpersonationOption.Required)> _

为我们工作

关于c# - 类似于 ASP.NET 中的 WCF 服务模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777510/

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