কোডটি অনুকূলিত বা কল স্ট্যাকের উপরে একটি নেটিভ ফ্রেম রয়েছে বলে অভিব্যক্তিটি মূল্যায়ন করতে অক্ষম ate


143

আমি ত্রুটি পাচ্ছি:

কোডটি অনুকূলিত বা কল স্ট্যাকের উপরে একটি নেটিভ ফ্রেম রয়েছে বলে অভিব্যক্তিটি মূল্যায়ন করতে অক্ষম ate

আমি পুনরাবৃত্তির আইটেমকম্যান্ড ইভেন্টে একটি নতুন পৃষ্ঠায় পুনঃনির্দেশ করেছি। ত্রুটিটি লাইনে ঘটে:

string url = "~/Galleries/AlbumImageList.aspx?UId=" + this.UserId.ToString() + "&AlbumId=" + e.CommandArgument.ToString();
Response.Redirect(url);

কেউ আমাকে সাহায্য করতে পারেন? সেখানে কিছু ভুল আছে? _COMPlusExceptionCodeহয় - 532459699

উত্তর:


162
Request.Redirect(url,false);

false বর্তমান পৃষ্ঠার সম্পাদন সমাপ্ত হওয়া উচিত কিনা তা নির্দেশ করে।


2
অনুরোধের মতো কিছু আছে? পুনর্নির্দেশ (url, মিথ্যা)?
এফ 11

অনুরোধের কোনও পুনর্নির্দেশ সম্পত্তি নেই
করান

@ করণ আপনি যে সংস্করণটি পাশাপাশি ব্যবহার করছেন অনুরোধটি সেই "অনুরোধ" এর মতো হবে
প্রাকীকসালুজা

125

নীচে প্রদর্শিত হিসাবে Response মিথ্যা দ্বিতীয় যুক্তি তৈরি করুন ।

Response.Redirect(url,false);

67

সমাধান

এই সমস্যাটি সমাধান করার জন্য, নিম্নলিখিত পদ্ধতির একটি ব্যবহার করুন:

  • জন্য Response.End , কল HttpContext.Current.ApplicationInstance.CompleteRequest () এর পরিবর্তে পদ্ধতি Response.End কোড এক্সিকিউশন বাইপাস করার Application_EndRequest ইভেন্ট।

  • জন্য Response.Redirect , একটি জমিদার, ব্যবহার Response.Redirect (স্ট্রিং URL, bool, endResponse) যে পাসের মিথ্যা জন্য endResponse প্যারামিটার অভ্যন্তরীণ কল দমন করতে Response.End । উদাহরণস্বরূপ: Response.Redirect ("nextpage.aspx", false);আপনি যদি এই কার্যবিবরণীটি ব্যবহার করেন তবে রেসপন্সের অনুসরণকারী কোডটি.আরডাইরেক্ট কার্যকর করা হবে।

  • জন্য Server.Transfer ব্যবহার Server.Execute পরিবর্তে পদ্ধতি।

লক্ষণ

আপনি যদি রেসপন্স.এন্ড, রেসপন্স.ড্রেডাইরেক্ট, বা সার্ভার.টান্সফার পদ্ধতিটি ব্যবহার করেন তবে একটি থ্রেডঅবর্টএক্সেপশন ব্যতিক্রম ঘটে। আপনি এই ব্যতিক্রমটি ধরতে ট্রাই-ক্যাচ স্টেটমেন্ট ব্যবহার করতে পারেন।

কারণ

রেসপন্স.এন্ড পদ্ধতিটি পৃষ্ঠার কার্য সম্পাদন শেষ করে এবং প্রয়োগের ইভেন্ট পাইপলাইনে অ্যাপ্লিকেশন_এন্ডআরউয়েস্ট ইভেন্টে এক্সিকিউশনটি স্থানান্তর করে। কোডের রেখাটি রেসপন্স অনুসরণ করে। এবং কার্যকর হয় না।

এই সমস্যাটি রেসপন্সে পুনঃনির্দেশ এবং সার্ভার. ট্রান্সফার পদ্ধতিতে ঘটে কারণ উভয় পদ্ধতিই রেসপন্সকে কল করে। এবং অভ্যন্তরীণভাবে।

অবস্থা

এই আচরণ নকশা দ্বারা হয়।

প্রোপার্টি

আর্টিকেল আইডি: 312629 - শেষ পর্যালোচনা: 30 আগস্ট, 2012 - সংশোধন: 4.0

প্রযোজ্য

  • মাইক্রোসফ্ট ASP.NET 4.5
  • মাইক্রোসফ্ট এএসপি.এনইটি 4
  • মাইক্রোসফ্ট এএসপি.নেট ৩.৫
  • মাইক্রোসফ্ট ASP.NET 2.0
  • মাইক্রোসফ্ট এএসপি.নেট 1.1
  • মাইক্রোসফ্ট ASP.NET 1.0

কীওয়ার্ডস: কেবিএক্সসেপ্ট্যান্ডলিং কেবিআরপি কে বি 312629

উত্স: পিআরবি: থ্রেডঅবর্টেক্সপশন ঘটে যদি আপনি রেসপন্স ব্যবহার করেন ndএন্ড, রেসপন্স.ড্রেইরেক্ট, বা সার্ভার.টান্সফার


14

একটি বাগে আমি তদন্ত করছিলাম সেখানে একটি প্রতিক্রিয়া ছিল ed পুনর্নির্দেশ () এবং এটি একটি অপ্রত্যাশিত স্থানে চালিত হয়েছিল ( পড়ুন: অনুপযুক্ত অবস্থান - একটি সদস্য সম্পত্তি প্রাপ্তির পদ্ধতির অভ্যন্তরে )।

যদি আপনি কোনও সমস্যা ডিবাগ করেন এবং " এক্সপ্রেশন মূল্যায়ন করতে অক্ষম ... " ব্যতিক্রমটি অনুভব করেন :

  1. একটি অনুসন্ধান সম্পাদন করুন Response.Redirect()এবং হয় দ্বিতীয় প্যারামিটারটি এন্ডারেস্পনস = মিথ্যা , বা তৈরি করুন
  2. পুনঃনির্দেশ কলটি অস্থায়ীভাবে অক্ষম করুন ।

এটি হতাশাজনক ছিল কারণ এটি ডিবাগারটিতে "পদক্ষেপের মাধ্যমে" সেই জায়গায় পৌঁছানোর আগে পুনর্নির্দেশ কলটি কার্যকর করা হবে ।


13

এই সমস্যার পিছনে কারণ এবং ত্রুটির সমাধানের জন্য দয়া করে এই লিঙ্কটি পরীক্ষা করুন:

http://support.microsoft.com/kb/312629/EN-US/

মাইক্রোসফ্ট সমর্থন নিবন্ধ:

PRB: থ্রেডঅবর্টেক্সপশন ঘটে যদি আপনি রেসপন্স ব্যবহার করেন nd

এই সমস্যাটি সমাধান করার জন্য, নিম্নলিখিত পদ্ধতির মধ্যে একটি ব্যবহার করুন: প্রতিক্রিয়া জানানোর জন্য, এবং প্রতিক্রিয়াটির পরিবর্তে HttpContext.Current.ApplicationInstance.CompleteRequest পদ্ধতিতে কল করুন nd এবং অ্যাপ্লিকেশন_অনড্রোয়েস্ট ইভেন্টটিতে কোড প্রয়োগকে বাইপাস করুন।

রেসপন্সের জন্য। রিডাইরেক্টের জন্য, একটি ওভারলোড, রেসপন্স.ড্রেডাইরেক্ট (স্ট্রিং ইউআরএল, বুল এন্ড রিস্পনস) ব্যবহার করুন যা রেসপন্সের অভ্যন্তরীণ কলকে দমন করতে এন্ড রিসপন্স প্যারামিটারের জন্য মিথ্যা পাস করে nd

উদাহরণস্বরূপ: প্রতিক্রিয়া। পুনঃনির্দেশ ("পরের পৃষ্ঠা.সপিএক্স", মিথ্যা);

আপনি যদি এই কার্যকারিতাটি ব্যবহার করেন, প্রতিক্রিয়া অনুসরণ করে এমন কোডটি। পুনঃনির্দেশ কার্যকর করা হয়। সার্ভার.টান্সফারের জন্য, পরিবর্তে সার্ভার.এক্সেকিউট পদ্ধতিটি ব্যবহার করুন।


3

আমারও একই সমস্যা ছিল, এবং এটি খুব জটিল ছিল। আমার জন্য, এটি ছিল কারণ আমি Ext.Js জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করছি। আপনি যদি একটি প্রতিক্রিয়া করছেন তবে যে সার্ভার-সাইড কোডটিতে আপনি একটি অজ্যাক্স কলটিতে অ্যাক্সেস করেছেন তা প্রত্যক্ষ করুন there Ext.js এর এক্সট্রা-রিডাইরেক্ট পদ্ধতিটির সাথে একযোগে কাজ করে।


3

এই কোডটি ব্যবহার করুন সমস্যার সমাধান করুন:

string path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "Uploadfile\\" + fileName;
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
byte[] bt = new byte[fs.Length];
fs.Read(bt, 0, (int)fs.Length);
fs.Close();
Response.ContentType = "application/x-unknown/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + fileName;+ "\"");
try
{
    if (bt != null)
    {
        System.IO.MemoryStream stream1 = new System.IO.MemoryStream(bt, true);
        stream1.Write(bt, 0, bt.Length);
        Response.BinaryWrite(bt);
        //Response.OutputStream.Write(bt, 0, (int)stream1.Length);
        Response.Flush();
        // Response.End();
    }
}
catch (Exception ex)
{
    Response.Write(ex.Message);
    throw ex;
}
finally
{
    Response.End();
}

5
এই কোডটি কী করে তার আরও কিছুটা ব্যাখ্যা সুন্দর হবে।
মেরিওভি


2

আমি যে রিসপন্সটি ব্যবহার করছিলাম সেগুলিতে কেবল অন্য কাউকে দৌড়ে এনকেস করুন E এবং () একটি অ্যাসিঙ্ক ট্রিগার বোতামটি

<asp:AsyncPostBackTrigger ControlID="btn_login" />

একটি আপডেট প্যানেলে। আমি নিয়মিত পোস্টে স্যুইচ করেছি সেরাটি নয় তবে এটি কার্যকর।

<asp:PostBackTrigger ControlID="btn_login" />. 

যেহেতু আমি কেবল পৃষ্ঠায় পুনঃনির্দেশ করছিলাম এটি ছিল একটি কার্যকর সমাধান।


2

আপনি যদি এক্সেল ডাউনলোড করতে আপডেট প্যানেল এবং লিঙ্ক বোতামটি ব্যবহার করেন তবে পোস্টব্যাক ট্রিগার যুক্ত করার চেয়ে প্যানেলের ভিতরে রয়েছে

<asp:PostBackTrigger ControlID="lnkTemplate" /> 

এবং কোডের পিছনে ক্লিক ইভেন্টের মধ্যে

string ServerPath = System.Configuration.ConfigurationManager.AppSettings["FilePath"] + "Template.xlsx";
System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(ServerPath));

HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
HttpContext.Current.Response.AddHeader("Content-Length", file.Length.ToString());
            HttpContext.Current.Response.ContentType = "application/octet-stream";
 HttpContext.Current.Response.TransmitFile(file.FullName);
 HttpContext.Current.Response.Flush();
 HttpContext.Current.ApplicationInstance.CompleteRequest();

1

এটি ব্যবহার করুন, সর্বদা আমার জন্য কাজ করে।

Response.Redirect(Request.RawUrl, false);

এখানে, রেসপন্স। রিডাইরেক্ট (রিকুয়েস্ট। রাউউআরএল) কেবলমাত্র বর্তমান প্রসঙ্গে ইউআরএলে পুনঃনির্দেশ করে, যখন দ্বিতীয় প্যারামিটার "মিথ্যা" ইন্ডার রিপ্পনকে নির্দেশ করে বা না করে।


1
স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম। দয়া করে আপনার উত্তরটি ব্যাখ্যা করুন, এটি কীভাবে সমস্যাটি সমাধান করে তা কাজ করে যাতে অন্যরা সহজেই বুঝতে পারে।
অক্টোবাস

0

এই সমস্যাটির ফলস্বরূপ আপনি যখন এমভিসিতে একটি রেজার পৃষ্ঠা রেখেছিলেন এমন কোনও মডেল যার সাথে কিছু বৈধতার বিধি রয়েছে। আপনি যখন কোনও ফর্ম থেকে পোস্ট করেন এবং আপনি কোনও কোনও ক্ষেত্রে বৈধতা ত্রুটি প্রদর্শন করতে ভুলে যান, তবে এই বার্তাটি সামনে আসতে পারে। অনুমান: এটি যদি আপনি পোস্ট করছেন যে পদ্ধতিটি ভিন্ন এবং অন্য উত্স দ্বারা ব্যবহৃত হয় বা মূল অনুরোধটি সরবরাহ করার পদ্ধতির চেয়ে আলাদা জায়গায় বাস করে তবে এটি হতে পারে।

সুতরাং এটি পৃথক হওয়ার কারণে, ত্রুটিগুলি প্রদর্শন করতে বা পরিচালনা করতে এটি মূল পৃষ্ঠায় ফিরে আসতে পারে না কারণ উত্থাপন এবং মডেল অবস্থা একই নয় (এর মতো কিছু)।

এটি আবিষ্কার করা কিছুটা কঠিন হতে পারে তবে করা সহজ ভুল। নিশ্চিত হয়ে নিন যে আপনার পুনরুদ্ধার পদ্ধতিটি এটিতে পোস্ট করার জন্য সমস্ত সম্ভাব্য উপায়কে বৈধতা দিয়েছে।

উদাহরণস্বরূপ, এমনকি যদি আপনার সার্ভারসাইড বৈধতা রয়েছে যা প্রকৃতপক্ষে ফর্মটিতে একটি স্ট্রিং লিখতে অসম্ভব করে তোলে যা আপনার বৈধতার দ্বারা অনুমোদিত সর্বোচ্চের চেয়ে বড়, তবে অন্য উপায় এবং উত্স থাকতে পারে যা পুনরুদ্ধার পদ্ধতিতে পোস্ট করা যেতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.