অনুরোধটি এই প্রসঙ্গে পাওয়া যায় না


113

আমি আইআইএস 7 ইন্টিগ্রেটেড মোড চালাচ্ছি এবং পাচ্ছি

অনুরোধটি এই প্রসঙ্গে পাওয়া যায় না

যখন আমি লগ 4 নেট সম্পর্কিত ফাংশনে এটি থেকে প্রবেশ করার চেষ্টা করি তখন যা থেকে কল করা হয় Application_Start। এটি আমার কোডের লাইন

if (HttpContext.Current != null && HttpContext.Current.Request != null)

এবং দ্বিতীয় তুলনার জন্য একটি ব্যতিক্রম নিক্ষেপ করা হচ্ছে।

এইচটিটিপি কনটেক্সট.কেনার্ট.নিউকস্টের পরীক্ষা করা ছাড়া আমি আর কী চেক করতে পারি ??


অনুরূপ প্রশ্ন পোস্ট করা হয়েছে @ iis7.5-তে রান্নিগ এমভিসি করার সময় অনুরোধটি এই প্রসঙ্গে ব্যতিক্রম পাওয়া যায় না

তবে সেখানে কোনও প্রাসঙ্গিক উত্তর নেই।


2
যদি আপনি অ্যান্ড্রু হারের লিঙ্কে প্রস্তাবিত অন্য দুটি সমাধান না নিয়ে থাকেন তবে আপনি কি আমার একমাত্র বিকল্প হিসাবে ট্রাই-ক্যাচ ব্লক যুক্ত করার পরামর্শ দিবেন? try if (HttpContext.Current.Request.Heeda ["User_info"]! = নাল) log4net.MDC.Set ("UserInfo", HttpContext.Current.Request.Heeda ["User_info"]। ToString ()) চেষ্টা করুন; } ক্যাচ () {}
বিশাল শেঠ

উত্তর:


79

দয়া করে আইআইএস 7 ইন্টিগ্রেটেড মোডটি দেখুন: অ্যাপ্লিকেশন স্টার্টে এই প্রসঙ্গে ব্যতিক্রমের জন্য অনুরোধটি উপলভ্য নয় :

"এই প্রসঙ্গে অনুরোধটি উপলভ্য নয়" ব্যতিক্রম হ'ল এআইএস .0.০ এএসপি.এনইটি অ্যাপ্লিকেশনগুলিকে ইন্টিগ্রেটেড মোডে নিয়ে যাওয়ার সময় আপনি যে সাধারণ ত্রুটিগুলি পেতে পারেন তার মধ্যে একটি। আপনি যদি অ্যাপ্লিকেশন শুরু করেছেন এমন অনুরোধটির এইচটিপিপি কনটেক্সট অ্যাক্সেস করার চেষ্টা করে তবে Global.asax ফাইলটিতে অ্যাপ্লিকেশনসার্ট পদ্ধতিটি প্রয়োগের ক্ষেত্রে এই ব্যতিক্রম ঘটবে।


2
: এই এখানকার পরিস্থিতি আরো আলোচনা stackoverflow.com/questions/1790457/...
jball

6
ধন্যবাদ। আমি আগে এই লিঙ্কটি দেখেছি। এতে বলা হয়েছে: "মূলত, আপনি যদি অ্যাপ্লিকেশন স্টার্টে অনুরোধ প্রসঙ্গে অ্যাক্সেস করে চলেছেন, আপনার দুটি পছন্দ আছে: 1) অনুরোধের প্রসঙ্গটি ব্যবহার না করার জন্য আপনার অ্যাপ্লিকেশন কোডটি পরিবর্তন করুন (প্রস্তাবিত) ২) অ্যাপ্লিকেশনটিকে ক্লাসিক মোডে স্থানান্তর করুন (প্রস্তাবিত নয়) )। " তাদের কি অন্য কোন বিকল্প নেই? আমার লগিং কোডটি ডিবিতে স্টাফ লিখেছে যেমন অ্যাপ্লিকেশন শুরু হয়েছে, যদি কোনও অনুরোধের মাধ্যমে না হয় তবে fields ক্ষেত্রগুলি সম্পূর্ণভাবে আমার লগ স্টেটমেন্ট অপসারণের পরিবর্তে নালায় সেট করা উচিত।
বিশাল শেঠ

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

2
এটি পছন্দ করেন নি, তবে আমাদের লগিং কোড (এবং / অথবা পুরো অ্যাপ্লিকেশন) এর বড় রিফ্যাক্টরিং ছাড়া অন্য
চেষ্টায় একটি চেকটি মুড়ে ফেলা ছিল

47
আপনি যদি এমন পরিস্থিতিতে রয়েছেন যে অনুরোধটি উপলব্ধ হবে না তখন কি কোনও উপায় বলার আছে ? এইচটিটিপি কনটেক্সট এর কিছু সম্পত্তি যা এই সম্পর্কে জানে? কেন এটি অন্যান্য বৈশিষ্ট্যগুলির মতো কেবল কিছুই ফিরিয়ে দেওয়ার পরিবর্তে ব্যতিক্রম ছুঁড়ে ফেলে?
জোশুয়া ফ্র্যাঙ্ক

50

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

এটি প্রদর্শিত হয় যে Requestপ্রাপ্যতার জন্য পরীক্ষার চেয়ে আপনি প্রাপ্যতার জন্য পরীক্ষা করতে পারেন Handler: যখন কোনও নেই Request, তখনও একটি অনুরোধ হ্যান্ডলারটি থাকা অবাক হবে। এবং এর জন্য পরীক্ষা করা Handlerসেই ভয়ঙ্কর Request is not available in this contextব্যতিক্রমটিকে বাড়ায় না ।

সুতরাং আপনি আপনার কোডটি এতে পরিবর্তন করতে পারেন:

var currContext = HttpContext.Current;
if (currContext != null && currContext.Handler != null)

সাবধান, একটি HTTP মডিউল প্রসঙ্গে, Handlerসংজ্ঞায়িত Requestএবং সংজ্ঞায়িত করা হতে পারে না Response(আমি দেখেছি বিগিনিউকুয়েস্ট ইভেন্টে)। সুতরাং আপনার যদি কাস্টম http মডিউলটিতে অনুরোধ / প্রতিক্রিয়া লগিংয়ের প্রয়োজন হয় তবে আমার উত্তরটি উপযুক্ত নাও হতে পারে।


1
তবুও এখানে ইতিমধ্যে বর্ণিত ত্রুটিগুলি, আমি বুঝতে পেরেছিলাম যে এটি একটি মন্তব্যে ওপি দ্বারা ব্যাখ্যা করা নির্দিষ্ট প্রয়োজনীয়তার জন্য যাওয়ার উপায় ছিল না। এই পৃষ্ঠায় আমার অন্যান্য উত্তর দেখুন।
ফ্রিডরিক

1
এটি আমার জন্য কৌশলটি করেছে, আমাকে কেবল অনুরোধের বিষয়টিটি ব্যতিক্রম ছাড়াই চেক করা দরকার। Ty
ওভারমার্স

17

এটি খুব ক্লাসিক কেস: যদি আপনি এইচটিএস এনপান্স দ্বারা সরবরাহিত কোনও ডেটা পরীক্ষা করে শেষ করে থাকেন তবে BeginRequestইভেন্টের আওতায় সেই কোডটি সরিয়ে নেওয়ার বিষয়টি বিবেচনা করুন ।

void Application_BeginRequest(Object source, EventArgs e)

এটি এইচডিপি শিরোনাম, ক্যোয়ারী স্ট্রিং এবং ইত্যাদির জন্য পরীক্ষা করার সঠিক জায়গা ... Application_Startসেটিংসের জন্য যা অ্যাপলিকেশনটিতে পুরো রানটাইনের সময় প্রয়োগ করা হয়, যেমন রাউটিং, ফিল্টার, লগিং ইত্যাদি।

অনুগ্রহ করে, স্ট্যাটিক .ctor বা ক্লাসিক মোডে স্যুইচিংয়ের মতো কোনও কাজের ক্ষেত্র প্রয়োগ করবেন না যদি না কোডটি সরিয়ে নিয়ে যাওয়ার কোনও উপায় না Startথাকে BeginRequest। আপনার ক্ষেত্রে এটি বেশিরভাগ ক্ষেত্রে কার্যকর হবে do


7

অ্যাপ্লিকেশন আরম্ভের সময় পাইপলাইনে আর কোনও অনুরোধের প্রসঙ্গ নেই বলে পরবর্তী প্রকৃত অনুরোধটি কোন সার্ভার / পোর্টে আসতে পারে তা অনুমান করার কোনও উপায় আছে তা আমি ভাবতে পারি না। আপনার এটি বিগেইন_সেশনে করতে হবে।

ক্লাসিক মোডে না থাকাকালীন আমি এখানে ব্যবহার করছি। ওভারহেড তুচ্ছ।

/// <summary>
/// Class is called only on the first request
/// </summary>
private class AppStart
{
    static bool _init = false;
    private static Object _lock = new Object();

    /// <summary>
    /// Does nothing after first request
    /// </summary>
    /// <param name="context"></param>
    public static void Start(HttpContext context)
    {
        if (_init)
        {
            return;
        }
        //create class level lock in case multiple sessions start simultaneously
        lock (_lock)
        {
            if (!_init)
            {
                string server = context.Request.ServerVariables["SERVER_NAME"];
                string port = context.Request.ServerVariables["SERVER_PORT"];
                HttpRuntime.Cache.Insert("basePath", "http://" + server + ":" + port + "/");
                _init = true;
            }
        }
    }
}

protected void Session_Start(object sender, EventArgs e)
{
    //initializes Cache on first request
    AppStart.Start(HttpContext.Current);
}

ধন্যবাদ, এটি আমার সাইটটি উঠে আসে এবং হঠাৎ করে এই লক্ষণটি নেমে আসার পরে এটি আবার চলতে শুরু করে। আশ্চর্যজনকভাবে যথেষ্ট, আমি অ্যাপ পুলটিতে ক্লাসিক এএসপি.এনইটি থেকে পরিবর্তন করি নি - তবুও আমি ত্রুটি পেয়েছি। এই কোডটির একটি বৈকল্পিক যুক্ত করা (ইন্টারলকড using এক্সচেঞ্জ (রেফ ইনট, ইনট) ব্যবহার করে) সমস্যার সমাধান করেছে।
জন কলান

1
এই উত্তরের প্রথম লাইন (এটি একটি সদৃশ ...) সরানো উচিত। এটি লিঙ্কযুক্ত পোস্টের সদৃশ নয়, প্রশ্নটি একেবারেই আলাদা। অ্যাপ্লিকেশন শুরুতে তিনি সার্ভারের নাম অ্যাক্সেসের জন্য জিজ্ঞাসা করছিলেন না। অ্যাপ্লিকেশন_স্টার্ট বিশেষ ক্ষেত্রে ব্যতিক্রম না করার জন্য তাঁর সাধারণ লগিং যুক্তি থাকতে কেবল তিনিই রাজি ছিলেন।
ফ্রিডরিক

6

ওপির উপর ভিত্তি করে বিস্তারিত প্রয়োজনের মন্তব্যে ব্যাখ্যা করা হয়েছে , আরও একটি উপযুক্ত সমাধান বিদ্যমান। ওপিতে বলা হয়েছে যে সে লগ 4 নেট, অনুরোধ সম্পর্কিত ডেটা সহ এর লগগুলিতে কাস্টম ডেটা যুক্ত করতে চায়।

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

এবং অনুরোধের প্রসঙ্গে যে জিনিসগুলি ঘটে না সেগুলি অনুরোধের প্রাপ্যতার জন্য পরীক্ষার প্রয়োজনীয়তা বাদ দিয়ে অনুরোধ সম্পর্কিত ডেটা লগ করার চেষ্টা করবে না। এই সমাধানটি তার উত্তরে আরমান ম্যাকহোটেরিয়ান যে নীতিটি পরামর্শ দিচ্ছিল তার সাথে মেলে ।

এই সমাধানটি কাজ করার জন্য, আপনার লগ 4 নেট সংযোজনকারীদের আপনার কাস্টম ডেটা লগ করার জন্য আপনার কিছু অতিরিক্ত কনফিগারেশনও প্রয়োজন।

এই সমাধানটি কাস্টম লগ বর্ধন মডিউল হিসাবে সহজেই প্রয়োগ করা যেতে পারে। এখানে এর জন্য নমুনা কোডটি দেওয়া হল:

using System;
using System.Web;
using log4net;
using log4net.Core;

namespace YourNameSpace
{
    public class LogHttpModule : IHttpModule
    {
        public void Dispose()
        {
            // nothing to free
        }

        private const string _ipKey = "IP";
        private const string _urlKey = "URL";
        private const string _refererKey = "Referer";
        private const string _userAgentKey = "UserAgent";
        private const string _userNameKey = "userName";

        public void Init(HttpApplication context)
        {
            context.BeginRequest += WebAppli_BeginRequest;
            context.PostAuthenticateRequest += WebAppli_PostAuthenticateRequest;
            // All custom properties must be initialized, otherwise log4net will not get
            // them from HttpContext.
            InitValueProviders(_ipKey, _urlKey, _refererKey, _userAgentKey,
                _userNameKey);
        }

        private void InitValueProviders(params string[] valueKeys)
        {
            if (valueKeys == null)
                return;
            foreach(var key in valueKeys)
            {
                GlobalContext.Properties[key] = new HttpContextValueProvider(key);
            }
        }

        private void WebAppli_BeginRequest(object sender, EventArgs e)
        {
            var currContext = HttpContext.Current;
            currContext.Items[_ipKey] = currContext.Request.UserHostAddress;
            currContext.Items[_urlKey] = currContext.Request.Url.AbsoluteUri;
            currContext.Items[_refererKey] = currContext.Request.UrlReferrer != null ? 
                currContext.Request.UrlReferrer.AbsoluteUri : null;
            currContext.Items[_userAgentKey] = currContext.Request.UserAgent;
        }

        private void WebAppli_PostAuthenticateRequest(object sender, EventArgs e)
        {
            var currContext = HttpContext.Current;
            // log4net doc states that %identity is "extremely slow":
            // http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html
            // So here is some custom retrieval logic for it, so bad, especialy since I
            // tend to think this is a missed copy/paste in that documentation.
            // Indeed, we can find by inspection in default properties fetch by log4net a
            // log4net:Identity property with the data, but it looks undocumented...
            currContext.Items[_userNameKey] = currContext.User.Identity.Name;
        }
    }

    // General idea coming from 
    // http://piers7.blogspot.fr/2005/12/log4net-context-problems-with-aspnet.html
    // We can not use log4net ThreadContext or LogicalThreadContext with asp.net, since
    // asp.net may switch thread while serving a request, and reset the call context
    // in the process.
    public class HttpContextValueProvider : IFixingRequired
    {
        private string _contextKey;
        public HttpContextValueProvider(string contextKey)
        {
            _contextKey = contextKey;
        }

        public override string ToString()
        {
            var currContext = HttpContext.Current;
            if (currContext == null)
                return null;
            var value = currContext.Items[_contextKey];
            if (value == null)
                return null;
            return value.ToString();
        }

        object IFixingRequired.GetFixedObject()
        {
            return ToString();
        }
    }
}

এটি আপনার সাইটে যুক্ত করুন, আইআইএস 7+ কনফিডের নমুনা:

<system.webServer>
  <!-- other stuff removed ... -->
  <modules>
    <!-- other stuff removed ... -->
    <add name="LogEnhancer" type="YourNameSpace.LogHttpModule, YourAssemblyName" preCondition="managedHandler" />
    <!-- other stuff removed ... -->
  </modules>
  <!-- other stuff removed ... -->
</system.webServer>

এবং অতিরিক্ত অতিরিক্ত বৈশিষ্ট্যগুলি লগ করতে অ্যাপেন্ডারদের সেট আপ করুন, নমুনা কনফিগার করুন:

<log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <!-- other stuff removed ... -->
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger - %message - %property%newline%exception" />
    </layout>
  </appender>
  <appender name="SqlAppender" type="log4net.Appender.AdoNetAppender">
    <!-- other stuff removed ... -->
    <commandText value="INSERT INTO YourLogTable ([Date],[Thread],[Level],[Logger],[UserName],[Message],[Exception],[Ip],[Url],[Referer],[UserAgent]) VALUES (@log_date, @thread, @log_level, @logger, @userName, @message, @exception, @Ip, @Url, @Referer, @UserAgent)" />
    <!-- other parameters removed ... -->
    <parameter>
      <parameterName value="@userName" />
      <dbType value="String" />
      <size value="255" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{userName}" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Ip"/>
      <dbType value="String" />
      <size value="255" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{Ip}" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Url"/>
      <dbType value="String" />
      <size value="255" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{Url}" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Referer"/>
      <dbType value="String" />
      <size value="255" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{Referer}" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@UserAgent"/>
      <dbType value="String" />
      <size value="255" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%property{UserAgent}" />
      </layout>
    </parameter>
  </appender>
  <!-- other stuff removed ... -->
</log4net>

আপনি HTTPContext.Request.UserHostAdress এর পরিবর্তে HttpContext.Current.Items ["IP"] ব্যবহার করতে পারেন তা নির্দেশ করার জন্য +1। খালি অনুরোধের ক্ষেত্রে এটি ডেটা আনার জন্য কাজ করে - যা আমাকে রক্ষা করেছে :) ধন্যবাদ।
সিলু

2

আপনি ক্লাসিক মোডে স্যুইচ না করেই সমস্যাটি পেতে পারেন এবং এখনও অ্যাপ্লিকেশন_স্টার্ট ব্যবহার করতে পারেন

public class Global : HttpApplication
{
   private static HttpRequest initialRequest;

   static Global()
   {
      initialRequest = HttpContext.Current.Request;       
   }

   void Application_Start(object sender, EventArgs e)
   {
      //access the initial request here
   }

কিছু কারণে স্থিতিশীল প্রকারটি এটির HTTPContext এ একটি অনুরোধের সাথে তৈরি করা হয়েছে, আপনাকে অ্যাপ্লিকেশন স্টার্ট ইভেন্টে এটি সংরক্ষণ এবং এটি অবিলম্বে পুনরায় ব্যবহার করতে দেয়


আমি ডুনো .. স্থানীয়ভাবে চলমান দেখে মনে হচ্ছে যে আমি যখন ব্যবহারের চেষ্টা করব তখন এটি বন্দরটি "দেখায়" না: প্রাথমিকআরকিউস্ট.আরল.গেটলফ্ট পার্ট (ইউরিপার্টিয়াল.অর্থারিটি); অন্যভাবে সন্ধান করতে হবে।
justabuzz

মারাত্মকভাবে হ্যাকিশ, তবে কিছু বেপরোয়া ক্ষেত্রে সহায়তা করতে পারে। (এটিকে ডাউন-ভোটিং বা আপ-ভোটিংয়ের মধ্যে আমি কিছুটা ভারসাম্যযুক্ত, তাই আমি কেবল ভোট দিই না))
ফ্রেডেরিক

1

আমি "ইন্টিগ্রেটেড" মোড থেকে "ক্লাসিক" মোডে গিয়ে এই সমস্যাটি সমাধান করতে / হ্যাক করতে সক্ষম হয়েছি।


0

এটি আমার পক্ষে কাজ করেছে - আপনি যদি অ্যাপ্লিকেশন_সার্টটিতে লগইন করতে চান তবে আপনি প্রসঙ্গটি সংশোধন করার আগে এটি করুন। আপনি কোনও উত্স ছাড়াই লগ এন্ট্রি পাবেন, যেমন:

2019-03-12 09: 35: 43,659 INFO (নাল) - আবেদন শুরু হয়েছে

আমি সাধারণত অ্যাপ্লিকেশন_স্টার্ট এবং সেশন_সত্তা উভয়ই লগ করি তাই পরবর্তী বার্তায় আমি আরও বিশদটি দেখতে পাচ্ছি

2019-03-12 09: 35: 45,064 INFO ~ / লিডস / লেডস.এসপিএক্স - অধিবেশন শুরু হয়েছে (স্থানীয়)

        protected void Application_Start(object sender, EventArgs e)
        {
            log4net.Config.XmlConfigurator.Configure();
            log.Info("Application Started");
            GlobalContext.Properties["page"] = new GetCurrentPage();
        }

        protected void Session_Start(object sender, EventArgs e)
        {
            Globals._Environment = WebAppConfig.getEnvironment(Request.Url.AbsoluteUri, Properties.Settings.Default.LocalOverride);
            log.Info(string.Format("Session Started ({0})", Globals._Environment));
        }


0

ভিজ্যুয়াল স্টুডিও ২০১২-এ, যখন আমি 'ডিবাগ' বিকল্পের সাথে সমাধানটি ভুলভাবে প্রকাশ করি তখন আমি এই ব্যতিক্রম পেয়েছিলাম। 'রিলিজ' বিকল্পের সাথে এটি কখনও ঘটেনি। আশা করি এটা সাহায্য করবে.


-3

আপনি নিম্নলিখিত ব্যবহার করতে পারেন:

    protected void Application_Start(object sender, EventArgs e)
    {
        ThreadPool.QueueUserWorkItem(new WaitCallback(StartMySystem));
    }

    private void StartMySystem(object state)
    {
        Log(HttpContext.Current.Request.ToString());
    }

-4

Global.asax.cs এ এটি করুন:

protected void Application_Start()
{
  //string ServerSoftware = Context.Request.ServerVariables["SERVER_SOFTWARE"];
  string server = Context.Request.ServerVariables["SERVER_NAME"];
  string port = Context.Request.ServerVariables["SERVER_PORT"];
  HttpRuntime.Cache.Insert("basePath", "http://" + server + ":" + port + "/");
  // ...
}

একটি যাদুমন্ত্র মত কাজ করে. এই.কমটেক্সট.আরকিউস্ট আছে ...

এটি.প্রযুক্তি ইচ্ছাকৃতভাবে একটি পতাকাের ভিত্তিতে ব্যতিক্রম ছোঁড়ে


5
-1: প্রশ্নটি পড়ুন: এটি যা ব্যর্থ হচ্ছে (আইআইএস> = 7 এবং ইন্টিগ্রেটেড মোড সহ)
রিচার্ড

জলদস্যুরা তাদের চাকরি ছেড়ে দিয়ে এবং প্রোগ্রামিংয়ে নিজেকে চেষ্টা করার সময় এটি ঘটেছিল :) কোনও অপরাধ নেই, ম্যান;)
আরমান ম্যাকহায়টিভিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.