سؤال

ولدي خدمة WCF التي تدعو، من خلال BL، طبقة البيانات، وفي نهاية المطاف SQL Server مرة أخرى نهاية. خدمة بلدي تكشف أساليب مختلفة / عمليات الحصول على البيانات من قاعدة البيانات. لقد بنيت أيضا مجموعة لللاختبار، ومضيف خدمة ويندوز، وهو كيف أخطط لنشر ذلك.

ويوم أمس عندما فعلت اختبار نشر والخدمة التي ما يرام ولكن لم أحصل على فرصة لمعرفة ما إذا كانت البيانات التي تم سحب بشكل صحيح. هنا الشيء: بلدي الانتشار اختبار البيئة (MS خادم 2003) هي مختلفة تماما من بلدي (لاب توب) بيئى الاختبار المحلي. I نشرها عن طريق نسخ من بن ل\ محتويات التصحيح من مشروع خدمة ويندوز على الخادم والرجوع إلى إكس هناك عندما كنت InstallUtil.exe. ولكن اتصال البيانات لDL ينبغي أن سلسلة اتصال مختلفة، من الواضح، كما يجب أن يكون الاتصال إلى قاعدة البيانات على الخادم، وليس جهاز الكمبيوتر المحمول. ومع ذلك، فإن app.config الوحيد الذي أراه في الدليل I نشرها لهو واحد للمضيف الخدمة. المشاريع الأخرى، مثل DL وBL، أيضا هناك كما في DLL، ولكن لا لاما app.config. فكيف يمكنني استبدال app.config لDL مع واحدة صحيحة لذلك بيئى؟ أنا متأكد من أن هذه هي مشكلة بسيطة أنا فقط لا الدلالة في يوم.

وثمة مسألة ذات الصلة: إذا قررنا في وقت لاحق أننا نريد أن استخدام مضيف HTTP بدلا من - أو بالإضافة إلى - TCP، يمكنني تشغيل المضيف الثاني القيادة من أن نفس الخدمة؟ هل أنا بحاجة فقط لنشر المضيف مع IIS وإضافة عقدة خدمة للapp.configs؟

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

المحلول

وApp.config للبيئة الاستضافة، في هذه الحالة خدمة Windows المدارة، يحتوي على التكوين لكافة الوحدات النمطية. وبالمثل، Web.config يحتوي كافة تكوينات إذا استضفت على IIS.

نصائح أخرى

وعند نشر المشروع، وapp.config الوحيد / الملف web.config سوف تحصل عليه هو واحد هو أن في المشروع قابل للتنفيذ (خدمة موقع / وحدة التطبيق / ويندوز / ويندوز تشكل التطبيق / الخ. المشروع). لن يتم نسخ أي app.configs لمشاريع DLL إلى الدليل بن لادن.

وستحتاج إلى نسخ أقسام التكوين من المشاريع DLL الخاص بك ووضعها في حياتك app.config مشروع الخدمة.

لسؤالك الثاني، يمكنك استضافة النهاية مختلفة لنفس الخدمة في نفس ServiceHost. يمكنك استضافة نقطة نهاية HTTP في التطبيق خدمة ويندوز / وحدة التحكم. إذا استضفت HTTP خارج IIS، قد تحتاج إلى إعطاء أذونات المستخدم للسماح لها بفتح منفذ HTTP. (انظر http://msdn.microsoft.com/en-us/library/ ms733768.aspx ). لHTTP قد تكون حياتك أسهل استضافة في IIS، ولكنه يعمل في ServiceHost عادي.

<system.serviceModel>
    <services>
        <service name="MyServiceTypes.MyService">
            <endpoint address="http://localhost:44444/MyService"
                      binding="basicHttpBinding"
                      contract="MyServiceTypes.IMyService" />

            <endpoint address="net.tcp://localhost:55555/MyService"
                      binding="netTcpBinding"
                      contract="MyServiceTypes.IMyService" />
        </service>
    </services>
</system.serviceModel>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top