Ошибка: не Мог счесть элемент конечной точки по умолчанию тем справочным контрактом

Я пишу ниже кода, чтобы создать компонент MM в tridion через основное обслуживание, но я получаю ошибку управлять этим обслуживанием,

 public ComponentData GetNewMultimediaComponent(CoreServiceClient Client, string folderUri, string schemaUri, string title, FileInfo fi)
    {
        if (fi.Extension == ".png")
        {
            string mmType = GetMultiMediaType(fi.Extension);
            if (mmType != null)
            {
                string tempLocation = "";

                UploadResponse us = new UploadResponse();
                using (StreamUploadClient streamClient = GetConnection())
                {
                    FileStream objfilestream = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read);
                    tempLocation = streamClient.UploadBinaryContent(fi.Name.ToLower(), objfilestream);
                }

                BinaryContentData bcd = new BinaryContentData
                {
                    UploadFromFile = fi.FullName,
                    MultimediaType = new LinkToMultimediaTypeData { IdRef = mmType },
                    Filename = fi.Name,
                    IsExternal = false
                };

                ComponentData res = GetNewComponent(folderUri, schemaUri, title);
                res.ComponentType = ComponentType.Multimedia;
                res.BinaryContent = bcd;

                res = (ComponentData)Client.Create(res, new ReadOptions());

В вышеупомянутом коде я надеваю ошибку ниже линии

using (StreamUploadClient streamClient = new StreamUploadClient()) 



{System.InvalidOperationException: Could not find default endpoint element that references contract 'Tridion.ContentManager.CoreService.Client.IStreamUpload' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.
       at System.ServiceModel.Description.ConfigLoader.LoadChannelBehaviors(ServiceEndpoint serviceEndpoint, String configurationName)
       at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName, Configuration configuration)
       at System.ServiceModel.ChannelFactory.ApplyConfiguration(String configurationName)
       at System.ServiceModel.ChannelFactory.InitializeEndpoint(String configurationName, EndpointAddress address)
       at System.ServiceModel.ChannelFactory`1..ctor(String endpointConfigurationName, EndpointAddress remoteAddress)
       at System.ServiceModel.EndpointTrait`1.CreateSimplexFactory()
       at System.ServiceModel.ClientBase`1.CreateChannelFactoryRef(EndpointTrait`1 endpointTrait).......

Только для обновления, я использую tridion основные услуги DLL без файла конфигурации и создаю связь успешно.

Настройка подключения

public StreamUploadClient GetConnection()
    {
        BasicHttpBinding basicHttpBinding = new BasicHttpBinding
        {
            MaxReceivedMessageSize = 10485760,
            ReaderQuotas = new XmlDictionaryReaderQuotas
            {
                MaxStringContentLength = 10485760,
                MaxArrayLength = 10485760
            },
            Security = new BasicHttpSecurity
            {
                Mode = BasicHttpSecurityMode.None,
            }
        };

        EndpointAddress remoteAddress = new EndpointAddress("http://abc/webservices/CoreService2011.svc/streamUpload_basicHttp");

        StreamUploadClient client = new StreamUploadClient(basicHttpBinding, remoteAddress);
        try
        {
            client.Open();
        }
        catch (Exception ex)
        {
           //log.Error("Error:CoreServiceConectionOpen:Common:" + ex.Message);
            throw ex;
        }

        return client;
    }

Теперь, надевая ошибку ниже линии

tempLocation = streamClient.UploadBinaryContent(fi.Name.ToLower(), objfilestream);

{System.ServiceModel.ProtocolException: The content type multipart/related; type="application/xop+xml";start="";boundary="uuid:739a821f-aee2-4eaf-9206-05a1ed19311c+id=1";start-info="text/xml" of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 560 bytes of the response were: '
--uuid:739a821f-aee2-4eaf-9206-05a1ed19311c+id=1
Content-ID: 
Content-Transfer-Encoding: 8bit
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"

C:\Windows\TEMP\tmp6841.png
--uuid:739a821f-aee2-4eaf-9206-05a1ed19311c+id=1--
'.

Кто-либо может помочь мне решить этот вопрос?

2

1 ответы

Проблема находится в этой линии:

StreamUploadClient streamClient = new StreamUploadClient()

Это - отдельная конечная точка, с которой вы пытаетесь соединиться. Как правило, это выбрало бы адрес и все другие свойства связи от app.config, но поскольку у вас нет никого, которого необходимо обеспечить всем обязательным параметрам сами, подобный тому, что вы делаете со своим CoreService. Обратитесь к app.config образцу, чтобы видеть, в каких параметрах вы нуждаетесь.

Что-то вроде этого:

    public StreamUploadClient GetConnection()
    {
        BasicHttpBinding basicHttpBinding = new BasicHttpBinding
        {
            MaxReceivedMessageSize = 10485760,
            ReaderQuotas = new XmlDictionaryReaderQuotas
            {
                MaxStringContentLength = 10485760,
                MaxArrayLength = 10485760
            },
            MessageEncoding = WSMessageEncoding.Mtom,
            Security = new BasicHttpSecurity
            {
                Mode = BasicHttpSecurityMode.None,
            }
        };

        EndpointAddress remoteAddress = new EndpointAddress("http://abc/webservices/CoreService2011.svc/streamUpload_basicHttp");

        StreamUploadClient client = new StreamUploadClient (basicHttpBinding, remoteAddress);
        try
        {
            client.Open();
        }
        catch (Exception ex)
        {
            log.Error("Error:CoreServiceConectionOpen:Common:" + ex.Message);
            throw ex;
        }

        return client;
    }
4
добавлено
Я не использую app.config файл, теперь в этом случае, что я должен сделать? Поскольку можно найти, я передаю свой объект клиента, у которого есть все детали связи.
добавлено автор Priyank Gupta, источник
Я добавил свой рассматриваемый код связи
добавлено автор Priyank Gupta, источник
Я понимаю ваш пункт, но когда я иду как этот путь получение ниже ошибки на вышеупомянутой линии tempLocation = streamClient. UploadBinaryContent (fi. Имя. ToLower (), objfilestream); Ошибка: Я понимаю ваш пункт, но когда я иду как этот путь получение ниже ошибки на вышеупомянутой линии {Система. ServiceModel. ProtocolException: многослойный/связанный тип контента; напечатайте = "application/xop+xml"; начните = "<tempuri.org/…; из ответа сообщение не соответствует типу контента закрепления (text/xml...
добавлено автор Priyank Gupta, источник
Найдите мое обновление на...
добавлено автор Priyank Gupta, источник
Сделанный, Большое спасибо.
добавлено автор Priyank Gupta, источник
Зафиксированный это, MessageEncoding = WSMessageEncoding. Mtom отсутствовал, посмотрите обновленный образец
добавлено автор Andrey Marchuk, источник