كيف يمكنني التبديل بشكل حيوي خدمة ويب عناوين .صافي بدون ترجمة?

StackOverflow https://stackoverflow.com/questions/125399

سؤال

لدي رمز يشير خدمة ويب ، أود أن خدمة ويب أن تكون ديناميكية (القراءة من قاعدة البيانات, config, الخ.) بحيث يتم تغييرها بسهولة.واحد رئيسي استخدام هذا وسيتم نشر بيئات متعددة حيث آلة أسماء و عناوين IP مختلفة.خدمة ويب التوقيع سوف تكون هي نفسها في جميع عمليات النشر فقط يقع في مكان آخر.

ربما كنت مدلل من قبل Visual Studio "إضافة مرجع ويب" معالج - يبدو أن هذا يجب أن يكون شيئا سهلا نسبيا, على الرغم من.

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

المحلول

عند إنشاء مرجع ويب وانقر على مرجع ويب في "مستكشف الحلول".في الجزء خصائص يجب أن نرى شيئا مثل هذا:

Web Reference Properties

تغيير القيمة إلى ديناميكية وضع الدخول في التطبيق الخاص بك.config.

هنا [كدبلاكس] المادة يحتوي على مزيد من المعلومات.

نصائح أخرى

إذا كنت حقا حيوي إعداد هذا, يجب عليك تعيين .Url مجال مثيل من فئة الوكيل على اتصالك.

تحديد قيمة .ملف التكوين من داخل البرنامج:

  1. هو في حالة من الفوضى.

  2. قد لا تقرأ حتى بدء التطبيق.

إذا كان هذا هو الشيء الوحيد الذي يجب القيام به مرة واحدة في تركيب أتفق مع غيرها من الملصقات واستخدام .ملف التكوين الديناميكي الإعداد.

أعرف أن هذا هو السؤال القديم, ولكن لدينا الحل أبسط بكثير من ما أراه هنا.عن WCF المكالمات مع VS2010 وما فوق.سلسلة url يمكن أن تأتي من إعدادات التطبيق أو مصدر آخر.في حالتي هو قائمة منسدلة حيث يختار المستخدم الملقم.TheService تم تكوينه من خلال VS إضافة الخدمة المرجعية.

private void CallTheService( string url )
{
   TheService.TheServiceClient client = new TheService.TheServiceClient();
   client.Endpoint.Address = new System.ServiceModel.EndpointAddress(url);
   var results = client.AMethodFromTheService();
}

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

هذا الأساس يخلق شبكة الإنترنت خدمة المجمع حيث إذا كان لديك لتحديث خدمة الإنترنت في بعض نقطة, طريق إضافة الخدمة المرجعية من أنك لا تفقد عملك.Microsoft مساعدة فئات جزئية خصيصا الدول أن جزءا من السبب في هذا البرنامج هو إنشاء خدمة ويب مغلفة. http://msdn.microsoft.com/en-us/library/wa80x488(v=مقابل 100).aspx

// Web Service Wrapper to override constructor to use custom ConfigSection 
// app.config values for URL/User/Pass
namespace myprogram.webservice
{
    public partial class MyWebService
    {
        public MyWebService(string szURL)
        {
            this.Url = szURL;
            if ((this.IsLocalFileSystemWebService(this.Url) == true))
            {
                this.UseDefaultCredentials = true;
                this.useDefaultCredentialsSetExplicitly = false;
            }
            else
            {
                this.useDefaultCredentialsSetExplicitly = true;
            }
        }
    }
}

تغيير URL السلوك "ديناميكية".

طالما خدمة ويب الأساليب الأساسية تتعرض الطبقات لا تتغير ، انها تافهة إلى حد ما.مع Visual Studio 2005 (والإصدارات الأحدث) ، إضافة مرجع ويب يخلق التطبيق.التكوين (أو على شبكة الإنترنت.التكوين ، لتطبيقات الويب) القسم يحتوي عنوان URL هذا.كل ما عليك القيام به هو تحرير التطبيق.ملف التكوين تعكس URL المطلوب.

في مشروعنا ، مقاربة بسيطة كان لديك التطبيق.التكوين إدخالات علق في بيئة نوع (التطوير والاختبار والإنتاج).لذلك نحن فقط uncomment دخول المطلوب البيئة نوع.لا الترميز المطلوبة هناك.

فقط ملاحظة حول الفرق بين والدينامية.

  • ثابت:يجب تعيين عنوان العقار في كل وقت استدعاء خدمة ويب.هذا لأن قاعدة URL إن خدمة الإنترنت في فئة وكيل منشئ.
  • ديناميكية:تكوين خاص سيتم إنشاء مفتاح في ويب.التكوين الملف.بشكل افتراضي فئة وكيل قراءة URL من هذا المفتاح.

إذا كنت جلب URL من قاعدة البيانات يمكنك يدويا تعيين إلى خدمة ويب فئة وكيل URL الملكية.وينبغي أن يتم ذلك قبل استدعاء الأسلوب ويب.

إذا كنت ترغب في استخدام ملف التكوين ، يمكنك تعيين فئات وكيل URL السلوك الديناميكي.

بالتأكيد باستخدام عنوان العقار هو الطريق للذهاب.ما إذا كان وضعه في التطبيق.تكوين قاعدة بيانات أو موقع ثالث نوع يعتمد على التكوين الخاص بك الاحتياجات.في بعض الأحيان كنت لا تريد التطبيق إلى إعادة تشغيل عند تغيير ويب موقع الخدمة.قد لا يكون موازن تحميل رفع الخلفية.قد تكون ساخنة-الترقيع خدمة ويب علة.التطبيق الخاص بك قد يكون تكوين الأمان المسائل أيضا.سواء كان ذلك الإنتاج db أسماء المستخدمين وكلمات السر أو حتى ws الأمن مصادقة معلومات عن الفندق.السليم الفصل بين الواجبات يمكن أن تحصل في بعض أكثر انخراطا التكوين الاجهزة.

إذا قمت بإضافة فئة مجمع حول وكيل ولدت الطبقات ، يمكنك تعيين عنوان العقار في بعض موحدة الأزياء في كل مرة تقوم بإنشاء المجمع الدرجة استدعاء الأسلوب ويب.

فتح solition explorer

حق انقر فوق تغيير عنوان URL خدمة ويب السلوك الديناميكي

انقر فوق إظهار كافة الملفات' أيقونة في "مستكشف الحلول"

في مرجع ويب تعديل الإشارة.cs الملف

تغيير constructer

public Service1() {
        this.Url = "URL"; // etc. string  variable this.Url = ConfigClass.myURL
      }

بالنسبة لي إشارة إلى خدمة ويب هو

الخدمة المرجعية

.

على أي حال فإنه من السهل جدا.كما قال أحدهم, لديك فقط لتغيير عنوان URL في شبكة الإنترنت.ملف التكوين.

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="YourServiceSoap" />
      </basicHttpBinding>
    </bindings>
    <client>
        **** CHANGE THE LINE BELOW TO CHANGE THE URL **** 
        <endpoint address="http://10.10.10.100:8080/services/YourService.asmx"
          binding="basicHttpBinding" bindingConfiguration="YourServiceSoap"
          contract="YourServiceRef.YourServiceSoap" name="YourServiceSoap" />
    </client>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top