কি routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
আমি আমার প্রকল্পে কোনও .axd ফাইল খুঁজে পাচ্ছি না, আমি কি এই রুট নিয়মটি সরাতে পারি?
কি routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
আমি আমার প্রকল্পে কোনও .axd ফাইল খুঁজে পাচ্ছি না, আমি কি এই রুট নিয়মটি সরাতে পারি?
উত্তর:
.axd ফাইলগুলি শারীরিকভাবে বিদ্যমান নেই। এএসপি.এনইটি অভ্যন্তরীণভাবে .axd এক্সটেনশনগুলি (স্ক্রিপ্টরেসোর্স.এক্সডি এবং ওয়েবআরসোর্স.এক্সডি) সহ ইউআরএল ব্যবহার করে এবং সেগুলি একটি এইচটিপিহ্যান্ডলার দ্বারা পরিচালিত হয়।
অতএব, আপনার এই নিয়মটি রক্ষা করা উচিত, ডেডিকেটেড এইচটিপিএইচেন্ডেলারকে এটি করতে না দিয়ে অনুরোধটি হ্যান্ডেল করার চেষ্টা থেকে এএসপি.নেট এমভিসি রোধ করা।
IgnoreRoute
এমভিসির রাউটিং কনফিগারেশনে রাখার কারণটি নিশ্চিত করে যে এমভিসি অনুরোধটি পরিচালনা করার চেষ্টা করে না। এটি কারণ স্ক্রিপ্টগুলি পরিবেশন করার জন্য .axd
এন্ডপয়েন্টগুলি অন্য এইচটিটিপি হ্যান্ডলার দ্বারা পরিচালিত হওয়া প্রয়োজন (হ্যান্ডলার যা এমভিসির অংশ নয় )।
কিছু ব্যাকগ্রাউন্ড
আপনি যদি এই ফাইলটি খোলেন:
%WINDIR%\Microsoft.NET\Framework\version\Config\Web.config
আপনি ফাইলের মধ্যে এটি পাবেন:
<add path="WebResource.axd"
verb="GET"
type="System.Web.Handlers.AssemblyResourceLoader"
validate="True" />
এটি মূলত Asp.NET রানটাইমকে বলছে: "আরে এসপ নেট ডুড, যদি ওয়েবআরসোর্স.এক্সডি-র জন্য অনুরোধ আসে তবে অনুরোধটি প্রক্রিয়া করার জন্য অ্যাসেম্বলি রিসোর্সলৌডার ব্যবহার করুন।"
দয়া করে মনে রাখবেন যে ওয়েবআরসোর্স.এক্সডি কোনও ফাইল নয় তবে কেবল একটি মানচিত্র (যদি আমি বলতে পারি) করতে চাই AssemblyResourceLoader
। এটি হ্যান্ডলারটি নিবন্ধভুক্ত নাম অনুসারে। আমার মেশিনে, আমি নীচের .এক্সডি হ্যান্ডলারগুলি পেয়েছি:
<add path="eurl.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
<add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
<add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
<add verb="*" path="*_AppService.axd"
ঠিক আছে, সুতরাং যে হ্যান্ডলারটি কি করে?
AssemblyResourceLoader
একটি সমাবেশ মধ্যে এমবেড করা ফাইল সন্ধান কিভাবে তাই এটি এটা পরিবেশন করতে পারেন (একটি ব্রাউজার অর্থাত ক্লায়েন্ট পাঠাতে) জানেন। উদাহরণস্বরূপ, এসপ নেট ওয়েব ফর্মগুলিতে, আপনি যদি বৈধতা নিয়ন্ত্রণগুলি ব্যবহার করেন তবে ওয়েব পৃষ্ঠায় ত্রুটিগুলি দেখানোর জন্য তারা কিছু জাভাস্ক্রিপ্টের উপর নির্ভর করে। যাইহোক, যে জাভাস্ক্রিপ্ট একটি সমাবেশে এম্বেড করা হয়। ব্রাউজারটির জাভাস্ক্রিপ্ট দরকার তাই আপনি এটি পৃষ্ঠার এইচটিএমএল এ দেখতে পাবেন:
<script src="/YourSite/WebResource.axd?d=fs7zUa...&t=6342..." type="text/javascript"></script>
AssemblyResourceLoader
সমাবেশ যেখানে জাভাস্ক্রিপ্ট querystring মধ্যে তথ্য ব্যবহার করে এমবেড করা হয় খুঁজে পেতে এবং জাভাস্ক্রিপ্ট ফিরে আসবে।
প্রশ্ন ফিরে
সুতরাং প্রশ্নের উত্তর দিতে, কি:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
এটি রাউটিং ইঞ্জিনকে জানিয়ে দিচ্ছে যে আমরা সেই রুট প্যাটার্নের সাথে মিলে এমন অনুরোধগুলি প্রক্রিয়াকরণ করব না। অন্য কথায়, আমরা .axd
অনুরোধগুলি প্রক্রিয়া করব না । কেন? কারণ এমভিসি নিজেই একটি এইচটিপিহ্যান্ডলার .axd
এবং একই সাথে .aspx
এবং অনেকগুলি ওয়েব হোল্ডার যা ওয়েবকনফিগ ফাইলে রয়েছে। এমভিসি হ্যান্ডলার অনুরোধটি যেমন AssemblyResourceLoader
কীভাবে কোনও সমাবেশে এম্বেড থাকা সংস্থান সন্ধান করতে চান তা কীভাবে জানেন তা জানেন না that কীভাবে এটি করতে হয়। এমভিসি কীভাবে করতে হয় তা জানে এবং ভাল করে যা কিছু করে তা এই প্রশ্নোত্তর এবং উত্তরের বাইরে নয়।
প্যাটার্ন {রিসোর্স} .axd / {* pathInfo with সহ সেই রুটটি ওয়েব রিসোর্স.এক্সডি বা স্ক্রিপ্টআর.সোর্স.এক্সডি হিসাবে ওয়েব রিসোর্স ফাইলগুলির জন্য একটি নিয়ামকের কাছে যেতে বাধা দেওয়ার জন্য অন্তর্ভুক্ত করা হয়েছে।
লিঙ্কটি পড়ুন: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx
আপনি উল্লেখ করতে পারেন যে রাউটিংয়ের নির্দিষ্ট URL টির অনুরোধগুলি পরিচালনা করা উচিত নয়। আপনি কোনও রুট সংজ্ঞায়িত করে এবং নির্দিষ্ট করে যে স্ট্রপআউটিংহ্যান্ডলার শ্রেণিটি সেই প্যাটার্নটি পরিচালনা করতে হবে সেগুলি দ্বারা নির্দিষ্ট অনুরোধগুলি পরিচালনা করতে বাধা রোধ করছেন । যখন কোনও অনুরোধ স্টপআউটিংহ্যান্ডলার অবজেক্ট দ্বারা পরিচালনা করা হয় , তখন স্টপআর্টিংহ্যান্ডলার অবজেক্ট অনুরোধের কোনও অতিরিক্ত প্রক্রিয়াটিকে রুট হিসাবে আটকায় । পরিবর্তে, অনুরোধটি ASP.NET পৃষ্ঠা, ওয়েব পরিষেবা বা অন্যান্য এএসপি.এনইটি শেষ পয়েন্ট হিসাবে প্রক্রিয়া করা হয়। আপনি স্টোরআউটিংহ্যান্ডলার ক্লাসটি ব্যবহার করে এমন রুট তৈরি করতে রুট কালেকশন ব্যবহার করুন method পদ্ধতি (বা রুটকলিফিকেশন এক্সটেনশনস M এমভিসি অ্যাপ্লিকেশনগুলির জন্য অগ্রাহ্য করুন ) উপেক্ষা করুন ।
: নীচের লিঙ্কে দেখে নিন http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx
এগুলি ফাইল নয় (এগুলি ডিস্কে নেই) - এগুলি কেবল এমন নাম যা কিছু HTTP হ্যান্ডলার নিবন্ধভুক্ত রয়েছে।