سؤال

لدي بائع تقول لي أن الصابون رأس لا ينبغي أن يكون https, ولكن لا يزال بوسعنا التواصل عبر SSL.قلقنا هو أننا نريد أن التواصل عبر SSL أن نموذج التعليمات البرمجية يسبب ذلك لا يحدث.

في نموذج البرنامج ، فإنها توفر هذا الكود:

    if (valservice.Url.StartsWith("https"))
    {
        valservice.Destination = new Microsoft.Web.Services3.Addressing.EndpointReference(
            new Uri(valservice.Url.Replace("https:", "http:")));
    } 

من تقسمها إلى خطوات صغيرة و إضافة بعض التصحيح ، يبدو أنه عند تغيير الوجهة ، أن عنوان URL تلقائيا التغييرات.

if (valservice.Url.StartsWith("https"))
{
    // fix the endpoint just in case (usually not necessary)
    //original code is just this next line 
    //valservice.Destination = new Microsoft.Web.Services3.Addressing.EndpointReference(
    //    new Uri(valservice.Url.Replace("https:", "http:")));


    //test code 
    string holdOriginalURL = valservice.Url;

    Response.WriteLine("1 URL=" + valservice.Url);
    Response.WriteLine("1 Destination=" + valservice.Destination);
    Response.WriteLine("1 Destination.Address.Value=" + valservice.Destination.Address.Value);
    Response.WriteLine("1 Destination.TransportAddress=" + valservice.Destination.TransportAddress);

    //test 
    string newURL = valservice.Url;
    newURL = newURL.Replace("https:", "http:"); 
    //valservice.Destination = new Microsoft.Web.Services3.Addressing.EndpointReference(
    //    new Uri(newURL));
    Microsoft.Web.Services3.Addressing.EndpointReference tempEndPoint = new Uri(newURL);
    valservice.Destination = tempEndPoint; 
    //valservice.Url = holdOriginalURL; 
    Response.WriteLine("2 URL=" + valservice.Url);
    Response.WriteLine("2 Destination=" + valservice.Destination);
    Response.WriteLine("2 Destination.Address.Value =" + valservice.Destination.Address.Value);
    Response.WriteLine("2 Destination.TransportAddress=" + valservice.Destination.TransportAddress);
}

الإخراج:

1 URL=https://someaddress.net/orgid/SomeApplication/SomeService.asmx
1 Destination.Address.Value=https://someaddress.net/orgid/SomeApplication/SomeService.asmx
1 Destination.TransportAddress=https://someaddress.net/orgid/SomeApplication/SomeService.asmx

2 URL=http://someaddress.net/orgid/SomeApplication/SomeService.asmx
2 Destination.Address.Value=http://someaddress.net/orgid/SomeApplication/SomeService.asmx
2 Destination.TransportAddress=http://someaddress.net/orgid/SomeApplication/SomeService.asmx

السؤال: هل من الممكن أن يكون URL مختلف في الوجهة من رابط ؟ إذا كان الأمر كذلك كيف ؟

أيضا, إذا كنت إعادة تعيين URL بعد التحديث الوجهة الوجهة أيضا يحصل تغيير.يبدو وهما بطريقة أو بأخرى مرتبطة مع بعضها البعض ولا يمكن أن تكون مختلفة ؟

شكرا

نيل والترز

تحديث 1:بعض البحوث تشير إلى أن البائع قد تكون قادرة على إضافة SoapActor السمة إلى الموقع.

عندما يكون لدينا https في URL ، فإنها تعطي هذا الخطأ:

الرأس يجب أن تتطابق الممثل URI قيمة خدمة ويب.الممثل URI يمكن أن تكون القيمة صراحة المحدد باستخدام SoapActorAttribute على على ASMX الدرجة.في غياب السمة الممثل URI يفترض أن يكون مساويا طلب HTTP Url الرسالة الواردة.رأس الواردة "https://somesite.net/orgid/SomeApp/SomeService.asmx" في حين أن المتلقي يتوقع "http://somesite.net/orgid/SomeApp/SomeService.asmx".

هل كانت مفيدة؟

المحلول

البائع العينة في الواقع الخاطئ وعدم استخدام SSL.الحل هو إضافة "عبر" المعلمة إلى منشئ نقطة النهاية:

 valservice.Destination =
            new Microsoft.Web.Services3.Addressing.EndpointReference(
                new Uri(valservice.Url.Replace("https:", "http:")), 
                new Uri(valservice.Url));

http://msdn.microsoft.com/en-us/library/microsoft.web.services3.addressing.endpointreference.via.aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top