Не удается использовать WCF при запуске консольного приложения через планировщик заданий

У меня есть простое консольное приложение, которое использует службу WCF, которую я создал и размещаю в IIS. Когда я запускаю/отлаживаю консольное приложение напрямую, все работает нормально. Когда я запускаю консольное приложение через планировщик заданий, я получаю следующую ошибку:

05.22.2016 12:46:08 — Ошибка при получении профилей: не было прослушивания конечной точки на http://localhost/ServiceABC который мог бы принять сообщение. Это часто вызвано неверным адресом или действием SOAP. Дополнительные сведения см. в разделе InnerException, если он присутствует.

05.22.2016 12:46:08 — Внутреннее исключение: System.Net.WebException: Удаленный сервер вернул ошибку: (404) Не найдено. в System.Net.HttpWebRequest.GetResponse() в System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply (время ожидания TimeSpan)

Мое консольное приложение выглядит следующим образом:

Sub Main()
    GetProfiles()
End Sub

Sub GetProfiles()
    Try
        WriteToFile("Getting Profiles")
        Dim client As New WcfServiceLibraryABCIIS.ServiceABCClient
        client.Endpoint.Binding.SendTimeout = New TimeSpan(0, 20, 0)
        client.GetProfiles()
        WriteToFile("Finished Getting Profiles")
    Catch ex As Exception
        'WriteToFile("Error getting profiles: " + ex.Message + ex.StackTrace)
        WriteToFile("Error getting profiles: " + ex.Message)
        WriteToFile("Inner Exception: " + ex.InnerException.ToString)
    End Try

End Sub

Private Sub WriteToFile(text As String)
    text = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt") + " - " + text
    Dim path As String = "C:\Users\abcuser\Documents\ServiceLog.txt"
    Using writer As New StreamWriter(path, True)
        writer.WriteLine(String.Format(text, DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt")))
        writer.Close()
    End Using
End Sub

Мой файл App.config выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <system.serviceModel>
        <bindings>
            <wsHttpBinding>
                <binding name="WSHttpBinding_IServiceABC" />
            </wsHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost/ServiceABC" binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_IServiceABC" contract="WcfServiceLibraryABCIIS.IServiceABC"
                name="WSHttpBinding_IServiceABC">
                <identity>
                    <userPrincipalName value="ABCCOMPUTER\abcuser" />
                </identity>

            </endpoint>
        </client>
     </system.serviceModel>
</configuration>

есть идеи?


person rkm2    schedule 22.05.2016    source источник


Ответы (1)


Проблема решена!

Я использовал неправильный адрес конечной точки. Я добавил конечную точку netTcpBinding в свою службу WCF, поэтому файл App.config консольного приложения теперь включает ссылку на:

<endpoint address="net.tcp://localhost/ServiceABC" binding="netTcpBinding"
            bindingConfiguration="netTcpEndpoint" contract="WcfServiceLibraryABCIIS.IServiceABC"
            name="netTcpEndpoint">

И я создаю клиента как:

Dim client As New WcfServiceLibraryABCIIS.ServiceABCClient("netTcpEndpoint")
person rkm2    schedule 22.05.2016