WCF没有暴露方法

时间:2013-05-09 14:01:28

标签: wcf

我的服务合同定义为:

[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不包含任何操作。 我能想到的唯一解决方案是手动编写wsdl并通过externalMetadataLocation的{​​{1}}属性公开它,但它对我来说感觉不对。

编辑1

这里是mensagemTISS类的定义

serviceMetadata

不知道它是否重要,但班级有这个属性:

[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
{ ... }

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

0 个答案:

没有答案