কেউ কি জানেন যে আমি কীভাবে পোষ্ট ডেটা বা সম্পূর্ণ এইচটিটিপি অনুরোধে আইআইএস পেতে পারি?
কেউ কি জানেন যে আমি কীভাবে পোষ্ট ডেটা বা সম্পূর্ণ এইচটিটিপি অনুরোধে আইআইএস পেতে পারি?
উত্তর:
আইআইএস কোনও পোস্টের ডেটা ছাড়াই কেবল ক্যোরিস্ট্রিং এবং শিরোনামের তথ্য রেকর্ড করে।
আপনি যদি আইআইএস using ব্যবহার করছেন, আপনি স্থিতি কোড 200 এর জন্য ব্যর্থ অনুরোধ ট্র্যাকিং সক্ষম করতে পারেন That এটি সমস্ত ডেটা রেকর্ড করবে এবং আপনি কোন ধরণের ডেটা অন্তর্ভুক্ত করবেন তা চয়ন করতে পারেন।
আইআইএস or বা either-তে আপনি গ্লোবাল.অ্যাক্সে অ্যাপ্লিকেশন_বেগিনআরউইকটি ব্যবহার করতে পারেন এবং পোষ্টের ডেটাতে আপনার নিজস্ব লগিং তৈরি করতে পারেন।
অথবা, আইআইএস in-এ, আপনি নিজের কাস্টম লগিং দিয়ে একটি HTTP মডিউল লিখতে পারেন।
পরিচালিত কোডে আপনি রেসপন্স.অ্যাপেনডটওলগ পদ্ধতিটি ব্যবহার করতে পারেন। এই পদ্ধতিটি সিএস-ইউরি-স্টেম ক্ষেত্রের ডেটা সংযোজন করবে - মোট দৈর্ঘ্য 4100 টি অক্ষর পর্যন্ত (অননুমোদিত)। আপনি যদি এই সীমাটি অতিক্রম করেন, তবে যে মানটি লগ করা হত তা "..." দিয়ে প্রতিস্থাপন করা হবে
উদাহরণস্বরূপ, আপনার Global.asax ফাইলে এই জাতীয় কিছু যুক্ত করা কৌশলটি করা উচিত (সি #):
void Application_EndRequest(Object Sender, EventArgs e)
{
if( "POST" == Request.HttpMethod )
{
byte[] bytes = Request.BinaryRead(Request.TotalBytes);
string s = Encoding.UTF8.GetString(bytes);
if (!String.IsNullOrEmpty(s))
{
int QueryStringLength = 0;
if (0 < Request.QueryString.Count)
{
QueryStringLength = Request.ServerVariables["QUERY_STRING"].Length;
Response.AppendToLog( "&" );
}
if (4100 > ( QueryStringLength + s.Length ) )
{
Response.AppendToLog(s);
}
else
{
// append only the first 4090 the limit is a total of 4100 char.
Response.AppendToLog(s.Substring(0, ( 4090 - QueryStringLength )));
// indicate buffer exceeded
Response.AppendToLog("|||...|||");
// TODO: if s.Length >; 4000 then log to separate file
}
}
}
}
যদিও আমি প্রশংসা করি যে এটি একটি পুরানো প্রশ্ন, আমি খুঁজে পেয়েছি যে এই কোডটি আমাকে যা প্রয়োজন ঠিক তা দিয়েছিল, সম্পূর্ণ অনুরোধ শিরোনাম এবং প্রতিক্রিয়া সহ একটি পাঠ্য ফাইল, এটি আপনার Global.asax.cs এ রেখে দিয়েছে:
protected void Application_BeginRequest(Object Sender, EventArgs e)
{
string uniqueid = DateTime.Now.Ticks.ToString();
string logfile = String.Format("C:\\path\\to\\folder\\requests\\{0}.txt", uniqueid);
Request.SaveAs(logfile, true);
}
এটি প্রতিটি অনুরোধের জন্য একটি টেক্সট ফাইল তৈরি করবে (চিত্র সহ) যাতে আপনি এটি কোথায় ব্যবহার করবেন সে সম্পর্কে সতর্ক হন। আমি কেবল এটি নির্দিষ্ট পোস্টের অনুরোধগুলিতে লগ করতে ব্যবহার করেছি।
আপনার ট্রেড ফাইলটিতে এটি চেষ্টা করুন সমস্ত কিছু সনাক্ত করতে
<tracing>
<traceFailedRequests>
<remove path="*" />
<add path="*">
<traceAreas>
<add provider="ASP" verbosity="Verbose" />
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
<add provider="ISAPI Extension" verbosity="Verbose" />
<add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI,WebSocket,Rewrite" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:00:00" statusCodes="200-999" />
</add>
</traceFailedRequests>
</tracing>
এটি উত্সাহজনক দেখায়, যদিও আমি এখনও এটি চেষ্টা করি নি:
https://www.codeproject.com/Tips/1213108/HttpModule-for-Logging-HTTP-POST-Data-in-IIS-Log
গ্লোবাল.অ্যাস্যাক্স কোডের কোড সহ এটি এখানে দেওয়া অন্যান্য বিকল্পের থেকে কীভাবে আলাদা? এটি কেবল এএসপি.নেট পৃষ্ঠাগুলির অনুরোধগুলির জন্যই কাজ করবে, অন্যান্য পৃষ্ঠাগুলি আইআইএস প্রক্রিয়া করতে পারে না (পিএইচপি, সিজি, জেএসপি, সিএফএমএল)। আমি যে লিঙ্কটি ভাগ করেছি তা এমন একটি মডিউল যা কোনও সাইটের জন্য (বা সার্ভার স্তরে) কোনও ধরণের অনুরোধের জন্য প্রক্রিয়া করতে আইআইএস সক্ষম করতে পারে।
আপনার আইআইএস লগ সেটিংসে নিম্নলিখিতগুলি সক্ষম করার চেষ্টা করুন:
পদ্ধতি (সিএস-পদ্ধতি)
ইউআরআই স্টেম (সিএস-ইউরি-স্টেম)
ইউআরআই ক্যোয়ারী (সিএস-ইউরি-কোয়েরি)