2010-01-13 11 views
36

का विस्तार नहीं करता है मैंने हाल ही में विजुअल स्टूडियो 2008 में एक वेब प्रोजेक्ट प्रोजेक्ट में एक वेबसाइट प्रोजेक्ट को परिवर्तित किया है। मुझे अंत में मिला यह संकलन करने, और प्रथम पृष्ठ (लॉगिन स्क्रीन) सामान्य रूप में प्रदर्शित किया है, लेकिन फिर जब यह Default.aspx पृष्ठ पर पुनः निर्देशित, मुझे एक त्रुटि प्राप्त:पार्सर त्रुटि: '_Default' को यहां अनुमति नहीं है क्योंकि यह कक्षा 'System.Web.UI.Page' और मास्टरटाइप घोषणा

Parser Error Message: 'SOME.NAMESPACE.MyApplicationName.WebApplication._Default' is not allowed here because it does not extend class 'System.Web.UI.Page'. 

अपने पृष्ठों के सभी एक वर्ग कहा जाता है से विरासत "बेसपेज" जो System.Web.UI.Page को बढ़ाता है। स्पष्ट रूप से समस्या उस वर्ग के साथ नहीं है क्योंकि login.aspx पृष्ठ त्रुटि के बिना प्रदर्शित होता है, और यह उस बेसपृष्ठ से भी प्राप्त होता है।

लॉगिन पृष्ठ सहित साइट पर सभी पृष्ठ, मास्टरपृष्ठ के बच्चे हैं।

कुछ परीक्षणों के बाद, मैंने यह निर्धारित किया है कि यह क्या है जो त्रुटि का कारण बनता है (हालांकि मुझे नहीं पता कि यह क्यों करता है)।

उन सभी पृष्ठों पर जहां मेरे पास निम्न टैग है, त्रुटि नहीं होती है।

<%@ MasterType VirtualPath="~/MasterPages/MainMaster.master" %> 

उन सभी पृष्ठों पर जिनमें पंक्ति नहीं है, त्रुटि होती है। यह पूरे पूरे आवेदन में है। मेरे पास केवल उन पृष्ठों पर टैग है जहां मास्टरपेज पर नियंत्रण संदर्भों की आवश्यकता है।

तो, मैंने सोचा कि मैं बस अपने सभी पृष्ठों पर उस पंक्ति को जोड़ूंगा और इसके साथ किया जाएगा। लेकिन जब मैं उस लाइन जोड़ने के लिए, मैं एक संकलन त्रुटि मिलती है: 'वस्तु' 'मास्टर'

यह त्रुटि ASPX पेज है कि मैं जोड़ लिया है के साथ जुड़े designer.cs फ़ाइल से आ रहा है के लिए एक परिभाषा शामिल नहीं है "मास्टर टाइप" घोषणा।

मैंने डिजाइनर फ़ाइल के पुनर्निर्माण को मजबूर कर दिया है, लेकिन यह कुछ भी नहीं बदलेगा। मैंने login.aspx (काम कर रहे) और default.aspx (काम नहीं कर रहे) के बीच डिजाइनर फ़ाइलों में मास्टर संदर्भ की सामग्री की तुलना की लेकिन वे बिल्कुल वही हैं।

चूंकि मैं वास्तव में इसे "मास्टर टाइप" घोषणा के बिना काम करने के लिए काम करना चाहता हूं, और चूंकि "फिक्स" वैसे भी काम नहीं कर रहा है, क्या किसी को पता है कि "मास्टर टाइप" घोषणा क्यों नहीं है एएसपीएक्स फ़ाइल पर पार्सर त्रुटि का कारण बनता है? क्या इसे ठीक करने का कोई तरीका है?

उदाहरण कोड:

Login.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/MainMaster.master" AutoEventWireup="true" Inherits="SOME.NAMESPACE.MyApplicationName.WebApplication.Login" Codebehind="Login.aspx.cs" %> 
<%@ MasterType VirtualPath="~/MasterPages/MainMaster.master" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server"> 
    <table> 
    <tr> 
     <td> 
      <asp:UpdatePanel ID="upLogin" runat="server"> 
       <ContentTemplate> 
        <asp:Panel ID="Panel1" runat="server" DefaultButton="Login1$LoginButton"> 
         <asp:Login ID="Login1" runat="server" LoginButtonStyle-CssClass="button" 
         TextBoxStyle-CssClass="textBoxRequired" 
         TitleTextStyle-CssClass="loginTitle" > 
         </asp:Login> 
        </asp:Panel> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
      <asp:UpdatePanel ID="upPasswordRecovery" runat="server"> 
       <ContentTemplate> 
       <asp:PasswordRecovery ID="PasswordRecovery1" runat="server" 
       SubmitButtonStyle-CssClass="button" TitleTextStyle-CssClass="loginTitle" 
       SuccessText="Your new password has been sent to you." 
       UserNameInstructionText="Enter your User name to reset your password." /> 
       </ContentTemplate> 
      </asp:UpdatePanel> 
     </td> 
    </tr> 
    </table> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="SideBarPlaceHolder" Runat="Server"> 
    <h2>Login</h2> 
    <asp:Button ID="btnCreateAccount" runat="server" Text="Create Account" OnClick="btnCreateAccount_Click" CausesValidation="false" /> 
</asp:Content> 

Login.aspx.cs:

यहाँ login.aspx और login.aspx.cs जो त्रुटि के बिना काम कर रहा है के लिए कोड है

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using SOME.NAMESPACE.MyApplicationName.WebApplication; 
using SOME.NAMESPACE.MyApplicationName.Bll; 

namespace SOME.NAMESPACE.MyApplicationName.WebApplication 
{ 
    public partial class Login : BasePage 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      Login1.Focus(); 
     } 
     protected void btnCreateAccount_Click(object sender, EventArgs e) 
     { 
      Page.Response.Redirect("~/CreateUser/default.aspx"); 
     } 
    } 
} 

यहां डिफ़ॉल्ट.aspx और default.aspx.cs के लिए कोड है जो पार्सर त्रुटि फेंक रहा है जब एक वेब ब्राउज़र में देखे गए:

Default.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/MainMaster.master" AutoEventWireup="True" Inherits="SOME.NAMESPACE.MyApplicationName.WebApplication._Default" Codebehind="Default.aspx.cs" %> 
<%@ MasterType VirtualPath="~/MasterPages/MainMaster.master" %> 
<asp:Content ID="MainContent" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server"> 
<div class="post"> 
    <h2 class="title">Announcements</h2> 
    <p class="meta">Posted by Amanda Myer on December 15, 2009 at 10:55 AM</p> 
    <div class="entry"> 
     <p>The MyApplicationName CMDB will be down for maintenance from 5:30 PM until 6:30 PM on Wednesday, December 15, 2009.</p> 
    </div> 
    <p class="meta">Posted by Amanda Myer on December 01, 2009 at 1:23 PM</p> 
    <div class="entry"> 
     <p>The MyApplicationName CMDB is officially live and ready for use!</p> 
    </div> 
</div> 
</asp:Content> 
<asp:Content ID="SideBarContent" ContentPlaceHolderID="SideBarPlaceHolder" Runat="Server"> 
    <img src="images/MyApplicationName.jpg" alt="MyApplicationName Gremlin" width="250"/> 
</asp:Content> 

Default.aspx.cs

using System; 
using System.Configuration; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Xml.Linq; 
using SOME.NAMESPACE.MyApplicationName.Bll; 
using SOME.NAMESPACE.MyApplicationName.WebApplication; 

public partial class _Default : BasePage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 
} 

धन्यवाद!

उत्तर

49

मैंने इसे समझ लिया। समस्या यह थी कि अभी भी परियोजना में कुछ पेज थे जिन्हें वेब अनुप्रयोग प्रोजेक्ट में आवश्यकतानुसार "नेमस्पेस" का उपयोग करने के लिए परिवर्तित नहीं किया गया था। मुझे लगता है कि मैंने सोचा था कि अगर यह अभी भी उन पृष्ठों में से कोई भी था, तो यह संकलित नहीं होगा, लेकिन अगर पृष्ठ ने बाहर से कुछ भी संदर्भ नहीं दिया है तो यह squawk दिखाई नहीं दे रहा था। तो जब यह कह रहा था कि यह "System.Web.UI.Page" से प्राप्त नहीं हुआ था, क्योंकि यह वास्तव में रन टाइम पर "बेसपेज" श्रेणी नहीं ढूंढ सका क्योंकि पृष्ठ स्वयं वेब अनुप्रयोग नामस्थान में नहीं था। मैं अपने सभी पृष्ठों को एक-एक करके चला गया और यह सुनिश्चित कर लिया कि वे वेब अनुप्रयोग नामस्थान में ठीक से जोड़े गए थे और अब यह केवल समस्या के बिना संकलित नहीं है, यह सामान्य रूप से प्रदर्शित होता है। वाह!

वेबसाइट से वेब एप्लिकेशन प्रोजेक्ट में कनवर्ट करने का परीक्षण क्या हो सकता है! इस के लिए

4

देखो:

अपनी परियोजना में किसी भी पेज एक लापता, या अलग अलग नाम स्थान है ...

आप <NO Namespace साथ अपनी परियोजना में किसी भी पृष्ठ है, तो>, या एक

Default.aspx की तुलना में अलग नामस्थान, आपको यह

"डिफ़ॉल्ट.aspx लोड नहीं कर सकता", या यह: "Default.aspx यहां नहीं है"।

भी: यदि आप अपने समाधान/परियोजना में एक पृष्ठ पर रीडायरेक्ट और पृष्ठ पुनः निर्देशित किया करने के लिए करने के लिए एक बुरा नाम स्थान है है - आप नहीं एक संकलक त्रुटि आ सकती है, जब तक आप कोशिश करते हैं और रन। यदि रीडायरेक्ट हटा दिया गया है या टिप्पणी की गई है, तो त्रुटि दूर हो जाती है ...

बीटीडब्ल्यू - इन त्रुटि संदेशों का क्या अर्थ है? क्या यह MS.Access है, "गलत दिशा" - ??

DGK

1

मैं एक रूपांतरण से एक समान त्रुटि थी लेकिन नहीं ...

System.Web.HttpException: 'Namespace.Website.MasterUserPages' यहाँ क्योंकि यह वर्ग विस्तार नहीं करता है की अनुमति नहीं है ' System.Web.UI.MasterPage '

मैं मास्टरपेज क्लास का विस्तार भी कर रहा था।

System.Web.HttpCompileException: c: \ निर्देशिका \ पथ \ वेबसाइट \ MasterUserPages.Master (30): त्रुटि CS1061: 'एएसपी

त्रुटि मेरे गुरु पृष्ठ अपने आप में एक सरल संकलन त्रुटि की वजह से था .masteruserpages_master 'में' btnHelp_Click 'की परिभाषा नहीं है और' ASP.masteruserpages_master 'प्रकार का पहला तर्क स्वीकार करने वाला कोई एक्सटेंशन विधि' btnHelp_Click 'नहीं मिल सकती है (क्या आप एक निर्देश या निर्देशक संदर्भ का उपयोग कर रहे हैं?)

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

0

मेरा मुद्दा सरल था: मास्टर पेज और मास्टर। डिज़ाइनर सीएस कक्षा में सही नेमस्पेस था, लेकिन मास्टर सीएस कक्षा में गलत नामस्थान था।

11

मुझे यह समस्या थी, क्योंकि मैंने अपने एएसपी.Net अनुप्रयोगों में से एक से एक नए एप्लिकेशन में एक (काफी सामान्य) वेबपृष्ठ की प्रतिलिपि बनाई थी।

मैंने फ़ाइल के नए स्थान को प्रतिबिंबित करने के लिए प्रासंगिक नामस्थान आदेशों को बदल दिया है ... लेकिन ... मैं एएसपीएक्स पृष्ठ में पैरामीटर को बदलने के लिए भूल गया था।

<%@ Page MasterPageFile="" StylesheetTheme="" Language="C#" 
    AutoEventWireup="true" CodeBehind="MikesReports.aspx.cs" 
    Inherits="MikesCompany.MikesProject.MikesReports" %> 

एक बार जब मैंने इनहेरिट पैरामीटर बदल दिया, तो त्रुटि दूर हो गई।

0

आप हमेशा नामस्थान को अपवर्तक कर सकते हैं और यह एक ही समय में सभी पृष्ठों को अपडेट करेगा। नामस्थान को हाइलाइट करें, राइट क्लिक करें और ड्रॉप डाउन मेनू से अपवर्तक का चयन करें।

0

मैं उस वेब पेज को हटाता हूं जिसे मैं वेब पेज से मास्टर पेज से जोड़ना चाहता हूं, प्रोजेक्ट में नया वेब पेज जोड़ना चाहता हूं और फिर मास्टर पेज सेट कर सकता हूं (शुरुआत में मैंने वेब पेज से वेब पेज को वेब एप्लिकेशन में कॉपी किया था ताकि एएसपीएक्स पेज (मैं प्रोजेक्ट के रूप में वेबसाइट को वेब एप्लिकेशन में परिवर्तित कर रहा था))

0

मैंने पृष्ठ (एएसपीएक्स/सीएस) की प्रतिलिपि बनाई और उसका नाम बदल दिया।

enter image description here

वर्ग इस त्रुटि मैच के लिए नाम बदलने के बाद हल किया गया था: के रूप में इस पृष्ठ का नाम सीएस फ़ाइल के शीर्ष पर "mainpage" इतनी वर्ग के नाम था।

0

मेरे लिए मेरे पास पृष्ठों पर सभी नामस्थान थे और ऊपर दिए गए समाधानों में से कोई भी इसे ठीक नहीं करता था।

<%@ Page Language="C#" 
AutoEventWireup="true" 
CodeBehind="xxx.aspx.cs" 
Inherits="xxx.xxx.xxx" 
MasterPageFile="~masterurl/default.master" %> 

तब मेरे aspx.cs फ़ाइल में नाम स्थान Inherits टैग से मेल नहीं खाती: मेरी समस्या में था। तो यह Inherits मैच के लिए

namespace xxx.xxx.xxx 

जरूरत .cs में।

0

याद रखें .. विरासत में सी # के लिए संवेदनशील मामले (vb.net के लिए ऐसा नहीं)

बाहर मिला कि कठिन रास्ता है।

संबंधित मुद्दे

 संबंधित मुद्दे