gpt4 book ai didi

c# - 从具有 FaultException 的 WCF Web 服务中消除天妇罗

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:37 25 4
gpt4 key购买 nike

背景:

我最近将用户请求的内部身份验证添加到 Web 服务,并在身份验证失败时抛出自定义 FaultException。

已标记 FaultException 自定义类型:

[DataContract(Namespace = ConstantConfig.ServiceNamespace, Name = "AuthenticationError")]
public class AuthenticationError

服务接口(interface)方法已被标记:

[OperationContract]
[FaultContract(typeof(AuthenticationError), Namespace = ConstantConfig.ServiceNamespace)]
ClientReport GetClientReport(DateTime from, DateTime to);

接口(interface)本身已经被标记:

[ServiceContract(Namespace = ConstantConfig.ServiceNamespace)]
public interface IClientReportService

接口(interface)的实现已经标注:

[ServiceBehavior(Namespace = ConstantConfig.ServiceNamespace)]
public class ClientReportService : IClientReportService

web.config 和 app.config 都指向复制/粘贴的服务命名空间。

然而,尽管如此,我仍然生成了一个 tempuri.wsdl。以下是 wsdl 的代表性摘录:

主要内容:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://webservice.company.com/ClientReportService" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:i0="http://tempuri.org/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ClientReportService" targetNamespace="http://webservice.company.com/ClientReportService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:import namespace="http://tempuri.org/" location="http://localhost:4319/ClientReportService.svc?wsdl=wsdl0" />
<wsdl:types>
<xsd:schema targetNamespace="http://webservice.company.com/ClientReportService/Imports">
<xsd:import schemaLocation="http://localhost:4319/ClientReportService.svc?xsd=xsd0" namespace="http://webservice.company.com/ClientReportService" />
<xsd:import schemaLocation="http://localhost:4319/ClientReportService.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
</xsd:schema>
</wsdl:types>

天妇罗:

<wsdl:operation name="GetClientReport">
<soap:operation soapAction="http://webservice.company.com/ClientReportService/IClientReportService/GetClientReport" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
<wsdl:fault name="AuthenticationErrorFault">
<soap:fault use="literal" name="AuthenticationErrorFault" namespace="" />
</wsdl:fault>
</wsdl:operation>

我猜有些东西我没有标记或标记不正确,但我找不到它。

有什么建议吗?

最佳答案

试试这个

<endpoint address=""
binding="basicHttpBinding"
bindingNamespace="http://my.namespace.com"
contract=""/>
</service>

关于c# - 从具有 FaultException 的 WCF Web 服务中消除天妇罗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15072179/

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