2014-08-27 73 views
0

我新來的wcf但是我試圖使用net.tcp綁定wcf服務將xml文件傳輸到客戶端。問題關閉wcf服務發送xml文件

我可以開始創建xml文件,並嘗試連接到我的wcf服務失敗。

我按照本指南http://msdn.microsoft.com/en-us/library/ff647180.aspx一直到創建Windows測試應用程序,我正在使用這個Web項目。

我已經加入了服務的參考項目和下面是我試圖執行代碼:

public string SendXMLDocument(XmlDocument xDoc) 
     { 
var message = Message.CreateMessage(MessageVersion.Soap11, "Request_for_action", new XmlNodeReader(xDoc)); 

      var factory = new ChannelFactory<IActionServiceLibrary>("IMMS.ActionsServiceLibrary.IActionServiceLibrary"); 
      var channel = factory.CreateChannel(); 

      var response = channel.Request(message); 
      channel.Close(); 

      return response.ToString(); //this should come back okay.. 

     } 

我的圖書館AppConfig的樣子:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 

    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" /> 
    </system.web> 
    <!-- When deploying the service library project, the content of the config file must be added to the host's 
    app.config file. System.Configuration does not support config files for libraries. --> 
    <system.serviceModel> 
    <client> 
     <endpoint address="net.tcp://localhost:8080/ActionService/" binding="netTcpBinding" 
     bindingConfiguration="NetTcpBinding_IActionServiceLibrary" contract="IMMS.ActionsServiceLibrary.IActionServiceLibrary" 
     name="IMMS.ActionsServiceLibrary.IActionServiceLibrary"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
    </client> 
    <services> 
     <service name="IMMS.ActionsServiceLibrary.ActionServiceLibrary"> 
     <endpoint address="net.tcp://localhost:8080/ActionService/" binding="netTcpBinding" bindingConfiguration="" 
      contract="IMMS.ActionsServiceLibrary.IActionServiceLibrary"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:8080/ActionService/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <bindings> 
     <netTcpBinding> 
     <binding name="Action_Service" sendTimeout="00:01:00" transactionFlow="false" 
      listenBacklog="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647" portSharingEnabled="false"> 
      <reliableSession enabled="false" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" protectionLevel="None" /> 
      <message clientCredentialType="None" /> 
      </security> 
     </binding> 
     <binding name="NetTcpBinding_IActionServiceLibrary" /> 
     </netTcpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

</configuration> 

的應用程序配置爲服務:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 

    <appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" /> 
    </system.web> 
    <!-- When deploying the service library project, the content of the config file must be added to the host's 
    app.config file. System.Configuration does not support config files for libraries. --> 
    <system.serviceModel> 
    <client> 
     <endpoint address="net.tcp://localhost:8080/ActionService/" binding="netTcpBinding" 
     bindingConfiguration="NetTcpBinding_IActionServiceLibrary" contract="IMMS.ActionsServiceLibrary.IActionServiceLibrary" 
     name="IMMS.ActionsServiceLibrary.IActionServiceLibrary"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
    </client> 
    <services> 
     <service name="IMMS.ActionsServiceLibrary.ActionServiceLibrary"> 
     <endpoint address="net.tcp://localhost:8080/ActionService/" binding="netTcpBinding" bindingConfiguration="" 
      contract="IMMS.ActionsServiceLibrary.IActionServiceLibrary"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://localhost:8080/ActionService/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    <bindings> 
     <netTcpBinding> 
     <binding name="Action_Service" sendTimeout="00:01:00" transactionFlow="false" 
      listenBacklog="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647" portSharingEnabled="false"> 
      <reliableSession enabled="false" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" protectionLevel="None" /> 
      <message clientCredentialType="None" /> 
      </security> 
     </binding> 
     <binding name="NetTcpBinding_IActionServiceLibrary" /> 
     </netTcpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

</configuration> 

我在通道創建時出現名稱不匹配。

任何幫助指向我通過wcf傳輸XML文件的正確方向將是偉大的。

+0

這件事情不會讓我編輯它,但如果你看到SITA.IMMS它現在只是IMMS。 – 2014-08-27 17:52:45

回答

0

我發現我的配置文件在解決它現在工作的錯誤後被搞砸了。