ASP.NET वेबसाइट को ASP.NET वेबसाइट में कैसे कन्वर्ट करें


90

मेरे पास ASP.NET 3.5 वेबसाइट (विज़ुअल स्टूडियो लिंगो) है, लेकिन साइट बढ़ती जा रही है और अन्य चीजों के बजाय काउबॉय देख रही है। मैं इसे वेब एप्लिकेशन (नाम स्थान और सभी) में परिवर्तित होते देखना चाहता हूं।

क्या यह कुछ ऐसा है जो विजुअल स्टूडियो में आसानी से किया जा सकता है? यदि नहीं, तो क्या कोई अन्य उपकरण है जो सभी नामस्थानों आदि को स्वचालित रूप से बना सकता है?


4
वेब एप्लिकेशन टेम्प्लेट की तुलना में वह वेबसाइट टेम्प्लेट वास्तव में भयानक POS है। मैं वेबसाइट टेम्प्लेट का उपयोग करने के किसी भी लाभ को देखने में विफल हूं ...
जेम्स

9
@ नाम - बस कई कारणों में से मैं इसे दूर जाने के लिए देख रहा हूँ ... आप गाना बजानेवालों को प्रचार कर रहे हैं ....
RSolberg

2
मुझे यकीन है कि नीचे की वॉकथ्रू बहुत अच्छी तरह से है (यह सब नहीं पढ़ा), लेकिन यूट्यूब पर एक व्यक्ति ने वेबसाइट को वेब ऐप में बदलने के लिए एक बहुत ही सरल तरीका दिखाया: youtube.com/watch?v=oXptokM0v7w - सामान्य तौर पर मैं गारंटी नहीं दे सकता कि यह सभी के लिए काम करेगा। मुझे लगता है कि यह विधि छोटे कम जटिल साइटों वाले लोगों के लिए काम करेगी।
डिस्लेक्सिकनकोको

3
यदि आप VS2013 का उपयोग कर रहे हैं, तो मेनू आइटम को स्थानांतरित न करें
जॉन

जवाबों:


108

खैर, यह पता चला है कि विकल्प "वेब एप्लिकेशन में कनवर्ट करें" "वेबसाइटों" के लिए मौजूद नहीं है। "वेब एप्लिकेशन में कनवर्ट करें" विकल्प केवल "वेब एप्लिकेशन" के लिए मौजूद है !!!!

[जोर मेरा]

इसलिए, यहां सौदा, रूपांतरण करने के लिए, आपको निम्न करने की आवश्यकता है:

  • अपने VS 2008 समाधान में एक नया "वेब एप्लिकेशन" जोड़ें (फ़ाइल-> Add-> नई परियोजना-> C # -> वेब-> ASP.NET वेब अनुप्रयोग)।

  • बाद में, आप पुरानी "वेबसाइट" की सभी फाइलों को अपने नए बनाए गए "वेब एप्लिकेशन" में कॉपी कर लेते हैं, और डिफ़ॉल्ट रूप से इसमें बनाई गई किसी भी फाइल को ओवरराइड करते हैं।

  • अगला कदम सबसे बदसूरत है, आपको अपनी "वेबसाइट" में नए "वेब एप्लिकेशन" में संदर्भों को "मैन्युअल रूप से" जोड़ने की आवश्यकता है। मुझे लगा कि VS 2008 पावरकंड्स खिलौना मेरे लिए ऐसा करेगा क्योंकि यह अन्य प्रोजेक्ट प्रकारों से संदर्भों की प्रतिलिपि बनाता है, लेकिन ऐसा नहीं हुआ। आपको इसे स्वयं, मैन्युअल रूप से करना होगा, और यदि आप एक ही असेंबली (जैसे मेरे मामले में AJAXToolkit) या असेंबली जिसमें GAC और स्थानीय संस्करण या तो दोनों के कई संस्करण हैं, तो आपको इस चरण में सतर्क रहना होगा।

  • अंतिम चरण को दोहराते रहें और "वेब एप्लिकेशन" बनाने की कोशिश करें। आपको "'....' 'जैसी त्रुटियां मिलती रहेंगी, यह अज्ञात नाम स्थान है। क्या आपको असेंबली का संदर्भ याद आ रहा है?" सुनिश्चित करें कि आपके पास उन लोगों में से कोई भी नहीं है जहां '....' को आपके द्वारा उपयोग किए जाने वाले सर्वर नियंत्रण की आईडी द्वारा प्रतिस्थापित किया गया है। दूसरे शब्दों में, संदर्भों को जोड़ते रहें और प्रोजेक्ट को केवल तब तक बनाए रखें जब तक कि गायब होने के कारण मौजूद त्रुटियां .DESIGNER.CS या .DESIGNER.VB फ़ाइलें न हों।

  • बाद में, वीएस 2008 समाधान एक्सप्लोरर में "वेब एप्लिकेशन" रूट प्रोजेक्ट नोड पर जाएं, और इसे राइट क्लिक करें, फिर आपको "वेब एप्लिकेशन में कनवर्ट करें" विकल्प मिलेगा। यह विकल्प वास्तव में "@ पेज" और "@ कांटोल" पेजों और नियंत्रणों के निर्देशों में छोटे बदलाव कर रहा है और आवश्यक बना रहा है। .DESIGNER.CS या .DESIGNER.VB फाइलें।

  • फिर से "वेब एप्लिकेशन" बनाने का प्रयास करें। यदि आपको त्रुटियां मिलती हैं, तो देखें कि क्या संदर्भ गायब हो सकते हैं और / या फिर "वेब एप्लिकेशन में कनवर्ट करें" पर क्लिक करें। कभी-कभी, यदि DESIGNER फ़ाइलों के गुम होने के अलावा कोई अन्य त्रुटि है, तो सभी पृष्ठों / नियंत्रणों में उन DESIGNER फ़ाइलों को उनके द्वारा बनाई गई नहीं होगी। गैर DESIGNER समस्या को ठीक करना और "वेब एप्लिकेशन में कनवर्ट करें" पर क्लिक करके फिर से इसके लिए कार्य करना चाहिए।

  • एक बार जब आप सफल VS निर्माण कर लेते हैं, तो आपको जाने के लिए तैयार होना चाहिए। अपने वेब एप्लिकेशन का परीक्षण शुरू करें। वैकल्पिक रूप से, आप वीएस 2008 समाधान एक्सप्लोरर में "वेब एप्लिकेशन" रूट प्रोजेक्ट नोड पर राइट क्लिक कर सकते हैं और "गुण" पर क्लिक कर सकते हैं, फिर आईआईएस में वर्चुअल फ़ोल्डर में "वेब एप्लिकेशन" सेट करने के लिए "वेब" पर जाएं (आप नया बना सकते हैं आभासी निर्देशिका में वीएस से)। यदि आप IIS वर्चुअल निर्देशिका का उपयोग करना चाहते हैं जो पुरानी "वेबसाइट" का उपयोग किया है, तो आपको पहले IIS से इसे हटाने की आवश्यकता है।

  • अपडेट: अपने पृष्ठों का परीक्षण करते समय, "App_Code" फ़ोल्डर में कक्षाओं के लिए सबसे अधिक ध्यान दें, विशेष रूप से कोई नाम नहीं। वे एक बड़ा जाल हो सकते हैं। हम एक ही स्थिर वर्ग में दो विस्तार विधि अधिभार के साथ एक समस्या थी जिसमें कोई नाम स्थान नहीं था, एक डेटाइम का विस्तार करता है? (Nullable) और एक और अधिभार कहता है जो DateTime का ही विस्तार करता है। विस्तार की विधि के रूप में अन्य अधिभार को कॉल करके वीएस 2008 संकलन पारित किया और हमें केवल संकलन (आईआईएस के साथ) में एक संकलन त्रुटि दी। कॉल को अन्य अधिभार में बदलने के लिए इसे विस्तार विधि के रूप में कॉल करके इसे सामान्य स्थिर विधि के रूप में बदलना (केवल उसी कक्षा में कॉल को बदलना, अन्य वर्गों के कॉल एक्सटेंशन विधि कॉल बने रहे) ने इसे हल किया, लेकिन स्पष्ट रूप से, यह ऐसा नहीं है सुरक्षित रूप में यह वीएस 2005 में हुआ करता था।

  • Update2: रूपांतरण के दौरान, VS 2008 आपके "App_Code" का नाम बदलकर "Old_App_Code" कर देता है। यह नया नाम बदसूरत लगता है, लेकिन इसे वापस नहीं लें। "वेब एप्लिकेशन" मॉडल में, सभी कोड एक विधानसभा में होंगे। रनटाइम में, वेब सर्वर को यह नहीं पता होता है कि आप किस वेब प्रोजेक्ट का उपयोग कर रहे हैं। यह "App_Code" फ़ोल्डर में सभी कोड लेता है और इसके लिए एक नया असेंबली बनाता है। इस प्रकार, यदि आपके पास "App_Code" नाम के फ़ोल्डर में कोड है, तो आप RUNTIME संकलन त्रुटियों के साथ समाप्त होंगे जो दो विधानसभाओं में एक ही प्रकार के होते हैं, एक VS द्वारा बनाया गया, और एक IIS / ASP.NET विकास सर्वर द्वारा बनाया गया । जिससे बचने के लिए। एक ही नाम के साथ "Old_App_Code" छोड़ दें, या इसे किसी भी चीज पर नाम दें: "App_ode"। ऐसे "App_Code" में कोई कोड न रखें

मैं यह पहले से जानता हूं, लेकिन अब इसे भूल गया हूं क्योंकि मैंने लंबे समय तक "वेबसाइट" मॉडल का उपयोग नहीं किया है :(


2
आपका लिंक शीर्ष पर टूटा हुआ है, त्रुटि 500
समीर अलीभाई

6
इसके अलावा, कोड फ़ाइलों को "सामग्री" के रूप में कॉपी करने के लिए देखें और "संकलित" नहीं करें
jcolebrand

14
VS2013 पर ऐसा करने वाले आप में से, "गुप्त वेब ऐप" को निचले स्तर पर प्रोजेक्ट मेनू में ले जाया गया है।
एरिक सस्समन

3
@ EricSassaman लेकिन यह मेरे लिए वेब साइट परियोजनाओं के लिए बिल्कुल भी नहीं है।
NickG

1
@ निकक, आप सही हैं, उत्तर की पहली पंक्ति के अनुसार, यह वेबसाइट परियोजनाओं के लिए नहीं है, प्रोजेक्ट मेनू तब तक मौजूद नहीं है जब तक कि आप समाधान एक्सप्लोरर में वेब एप्लिकेशन का चयन नहीं करते हैं। यदि आप मेनू पर "वेबसाइट" देखते हैं, तो यह वेब एप्लिकेशन नहीं है। रिक्त वेब अनुप्रयोग बनाने के लिए ऊपर दिए गए चरणों का पालन करें, अपनी फ़ाइलों को इसमें कॉपी करें। फिर "वेब एप्लिकेशन में कनवर्ट करें" आपके नए वेब एप्लिकेशन के लिए प्रोजेक्ट मेनू पर होना चाहिए। क्या तुमने वह किया?
एरिक सेसमैन

12

वॉकथ्रू: MSDN पर विजुअल स्टूडियो में एक वेब एप्लीकेशन प्रोजेक्ट के लिए एक वेब साइट प्रोजेक्ट को परिवर्तित करना

यदि आपकी वेबसाइट एप्लिकेशन बढ़ती है .. तो इसे कई परियोजनाओं में विभाजित करना बेहतर है। वेब साइट परियोजना से वेब अनुप्रयोग परियोजना में रूपांतरण ज्यादा मदद नहीं करेगा।


5

यदि आपको अपने नए वेब एप्लिकेशन प्रोजेक्ट में सभी 'हेल्पर' कक्षाओं के विजुअल स्टूडियो में फ़ाइल प्रॉपर्टीज़ की जाँच करने में समस्या हो रही है। एक प्रोजेक्ट के लिए मैं बिल्ड एक्शन को कंटेंट पर सेट कर रहा था जबकि इसे कंपाइल होना चाहिए था।


3

वीएस 2010 में एक नया वेब एप्लिकेशन बनाएं।
1. विंडोज एक्सप्लोरर का उपयोग करके आप अपनी सभी फाइलों को प्रोजेक्ट फ़ोल्डर में कॉपी कर सकते हैं।
2. वीएस 2010 में समाधान एक्सप्लोरर सभी फाइलों को दिखाता है।
3. फ़ाइलों और फ़ोल्डरों का चयन करें - राइट क्लिक प्रोजेक्ट में शामिल हैं।
4. प्रोजेक्ट सॉल्यूशन एक्सप्लोरर पर राइट क्लिक करें और Convert to Web Application का चयन करें।

काफी कुछ छोटे अंतर हैं, जैसे कि App_Code फ़ोल्डर का नाम बदलकर old_app_code हो जाएगा - यह आश्चर्यजनक रूप से किसी भी त्रुटि का कारण नहीं है। आपके ऑब्जेक्ट डेटा स्रोतों पर TypeName और @Page टैग पर विरासत को [ProjectName] की आवश्यकता हो सकती है। उपसर्ग विश्व स्तर पर जोड़ा गया। उदाहरण के लिए यदि आपका प्रकार "BusinessLogic.OrderManager" था और आपकी परियोजना का नाम InventorySystem है तो आपको इसे InventorySystem.BusinessLogic.OrderManager में बदलने की आवश्यकता होगी। इसके अलावा कुछ प्रदर्शन परिवर्तन, जैसे कि आवश्यक फ़ील्ड सत्यापनकर्ता लाल फ़ॉन्ट को डिफ़ॉल्ट नहीं करते, वे डिफ़ॉल्ट रूप से काले रंग के होते हैं।


मेरी ऐप कोड फ़ाइल नहीं बदली गई थी जैसे कि यह मान लिया गया था। मुझे इसे फिर से नाम बदलने के लिए सभी सीएस पृष्ठों को बदलना पड़ा।
माइक

3

मैं शुरू में उन्हीं समस्याओं का सामना कर रहा था। Wrox व्यावसायिक ASP.NET 4.0 पुस्तक का अनुसरण करने के बाद, मुझे अपने मामले के लिए निम्नलिखित समाधान मिला।

मैंने पहली बार एक नया वेब एप्लिकेशन बनाया। सभी वेबसाइट फ़ाइलों को वेब एप्लिकेशन फ़ोल्डर में कॉपी किया गया। एप्लिकेशन पर राइट क्लिक करें, और वेब एप्लिकेशन में कनवर्ट करें पर क्लिक करें।

आप पूछ सकते हैं कि आपको वेब ऐप को वेब ऐप में बदलने की आवश्यकता क्यों है। इसका उत्तर यह है, कि जब आप एक वेबसाइट बनाते हैं, तो आप केवल .cs फ़ाइल को जहाँ-जहाँ आवश्यकता होती है, वहां कोड करते हैं। एक वेब अनुप्रयोग, हालांकि .design.cs (या .vb) और कोड के लिए एक .cs फ़ाइल की घोषणा करता है और स्वचालित रूप से अनुभाग डिजाइन करता है।

अगला: पृष्ठ निर्देश में 'इनहेरिट्स' विशेषता की तरह, सभी मैनुअल संदर्भों को अपनी वेबसाइट की अन्य फाइलों में हटा दें, क्योंकि नाम रिक्त स्थान केंद्रों को संदर्भित करने का ध्यान रखेंगे।

मुझे एक समस्या का भी सामना करना पड़ा, क्योंकि मैंने अपनी परियोजना में ओबीजे और बीआईएन फ़ोल्डर शामिल नहीं किया था। अगर आपको लगता है कि आप अपने BIN और OBJ फोल्डर को याद कर रहे हैं, तो बस सोल्यूशन एक्सप्लोरर में 'Show All Files' आइकन पर क्लिक करें और फिर लापता फोल्डर पर राइट क्लिक करें और प्रोजेक्ट में जोड़ें। (यह सुनिश्चित करने के लिए कि वे परियोजना के साथ संकलित हैं।)

अद्यतन: जैसा कि @deadlychambers टिप्पणियों में बताते हैं: आप "Ctrl + Shift + F" करके हर जगह खोज सकते हैं और फिर खोज सकते हैं Inherits="(.*?)"। यह सभी घटनाओं को पाएगा और शायद आपको कुछ समय बचाएगा!


1
आप सभी को Ctrl-Shift-F के साथ हटा सकते हैं और फिर नियमित अभिव्यक्ति के लिए खोज विकल्प बदल सकते हैं और इस Inherits = "(!?)" का उपयोग कर सकते हैं?
डेडलीचैम्बर्स

1
जाँचें कि इनहेरिट्स है = "(। *?)" दूसरे को अंतिम उद्धरण चिह्न तक विरासत के पीछे सब कुछ हड़प जाएगा।
डेडलीचैम्बर

1
मैं सिर्फ एक मुद्दे पर भाग गया, जहां विरासत में नाम नहीं होने के कारण डिजाइनर ने क्लास को डिलीट कर दिया। काश यह आसान होता।
डेडलीचैम्बर्स

3

मैंने अब एक वेबसाइट परियोजना को सफलतापूर्वक एक वेब अनुप्रयोग पर स्थानांतरित कर दिया है और बाहर देखने के लिए कुछ गोचैट्स शांत है।

आपके निपटान में ReSharper होने से Aspx फ़ाइलों को फिर से बनाने में बहुत मदद मिलती है।

  1. अपना समाधान सेट करें और एक खाली WebApplication बनाएं
  2. सभी फ़ाइल की प्रतिलिपि बनाएँ
  3. वेबसाइट परियोजनाओं में aspx फ़ाइलें एक namspace नहीं है। अपनी कक्षाओं को उपयुक्त नामस्थानों में लपेटें
  4. कॉपी करने के दौरान, सबफ़ोल्डर्स में मेरे सभी पेजों को मेरे प्रोजेक्ट नाम और फ़ोल्डरनाम में बदल दिया गया, इसलिए मुझे 40ish मिला public partial class FolderName_Projectname : Pageअगर नेक्सेसरी का नाम रेस्परर या मैन्युअल रूप से उपयोग करते हुए सभी फाइलों को बदल दिया। यदि आप कई त्रुटियों का सामना करते हैं "There is already a member Page_Load() defined", तो यह गलत वर्ग नामों के दोहराव के कारण सबसे अधिक संभावना है
  5. एक नाम स्थान जोड़ने के बाद
  6. CodeFileसभी aspx पृष्ठों के साथ बदलें Codebehindऔर विशेष रूप से मैं आपके सबफ़ोल्डर की फ़ाइलों पर ध्यान दें। सुनिश्चित करें कि Inhertis=""सापेक्ष पथ शामिल नहीं है। आपके नामस्थान सब कुछ का ख्याल रखते हैं। तो सही स्वरूप है Inherits="Namespace.classname"। यदि आपकी कक्षा में एक नाम स्थान NaSpa और फ़ाइल नाम foo.cs है तो यह होगाInherits="NaSpa.foo"

  7. आपके द्वारा अपनी सभी फाइलें तैयार करने के बाद (अपने मास्टर पेजों को न भूलें), "वेब एप्लिकेशन में कनवर्ट करें" चलाएं। यदि आप बाद में त्रुटियों का सामना करते हैं, तो कुल्ला और दोहराएं। यदि आप "टेक्स्टबॉक्सनाम की छांट नहीं पाते हैं, तो आप एक संदर्भ को याद कर रहे हैं"। एक अच्छा संकेतक स्वचालित रूप से उत्पन्न डिजाइनर फ़ाइलों की जांच करना है। यदि TextBoxNameवहाँ प्रकट नहीं होता है, तो रूपांतरण पूरी तरह से सफल नहीं हुआ।

  8. किसी भी लापता निर्भरता को हल करें।
  9. बिल्ड

0

डिफ़ॉल्ट ASP नाम स्थान अब काम नहीं करता है। इसलिए मैं पृष्ठ के बाहर से अपने उपयोगकर्ता नियंत्रण कक्ष को कॉल नहीं कर सकता। उन्हें एक नाम स्थान देना और एएसपी से मेरे नाम स्थान पर डिफ़ॉल्ट बदलना काम करने लगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.