1

我的服务合同定义为:

[System.ServiceModel.ServiceContractAttribute(Namespace = "http://www.ans.gov.br/tiss/ws/tipos/tisscancelaguia/v30001", ConfigurationName = "ItissCancelaGuia")]
public interface ItissCancelaGuia
{
  [System.ServiceModel.OperationContractAttribute(Action = "tissCancelaGuia", ReplyAction = "*")]
  [System.ServiceModel.FaultContractAttribute(typeof(tissFaultWS), Action = "", Name = "tissFaultWS", Namespace = "http://www.ans.gov.br/padroes/tiss/schemas")]
  [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults = true)]
  [System.ServiceModel.ServiceKnownTypeAttribute(typeof(SignatureType))]
  mensagemTISS tissCancelaGuia_Operation(string mensagem);
}

和实施:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single, ConfigurationName = "CancelaGuiaTS")]
public sealed class tissCancelaGuia : ItissCancelaGuia
{...}

以及 web.config 的相关部分:

  <service behaviorConfiguration="tissCancelaGuiaStringServiceBehavior"
    name="CancelaGuiaTS">
    <endpoint address="" behaviorConfiguration="EndPointValidation"
      binding="basicHttpBinding" bindingConfiguration="TISSv3_binding"
      name="CancelaGuiaTs" contract="ItissCancelaGuia" />
    <endpoint address="mex" binding="mexHttpBinding" name="CancelaGuiaTsMetadata"
      contract="IMetadataExchange" />
  </service>

    <behavior name="tissCancelaGuiaStringServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>

服务编译正确,但暴露的 wsdl 不包含任何操作。externalMetadataLocation我能想到的唯一解决方案是手动编写 wsdl 并通过serviceMetadata.

编辑 1

这里是mensagemTISS类的定义

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.ans.gov.br/padroes/tiss/schemas")]
public partial class mensagemTISS
{ ... }

不知道这是否重要,但该类具有此属性:

    [System.Xml.Serialization.XmlElementAttribute("operadoraParaPrestador", typeof(operadoraPrestador), Order=1)]
    [System.Xml.Serialization.XmlElementAttribute("prestadorParaOperadora", typeof(prestadorOperadora), Order=1)]
    public object Item
    {
        get
        {
            return this.itemField;
        }
        set
        {
            this.itemField = value;
        }
    }

定义为原始模式中的选择。

4

0 回答 0