রুটগুলি কী।


উত্তর:


81

.axd ফাইলগুলি শারীরিকভাবে বিদ্যমান নেই। এএসপি.এনইটি অভ্যন্তরীণভাবে .axd এক্সটেনশনগুলি (স্ক্রিপ্টরেসোর্স.এক্সডি এবং ওয়েবআরসোর্স.এক্সডি) সহ ইউআরএল ব্যবহার করে এবং সেগুলি একটি এইচটিপিহ্যান্ডলার দ্বারা পরিচালিত হয়।

অতএব, আপনার এই নিয়মটি রক্ষা করা উচিত, ডেডিকেটেড এইচটিপিএইচেন্ডেলারকে এটি করতে না দিয়ে অনুরোধটি হ্যান্ডেল করার চেষ্টা থেকে এএসপি.নেট এমভিসি রোধ করা।


5
আমি নিশ্চিত যে আপনি চান যে লোকেরা জাভাস্ক্রিপ্ট এবং শৈলী ধারণ করে আপনার সাইটে "axd ফাইল" ডাউনলোড করতে সক্ষম হবে।
মোল্ডে

4
এই উত্তরটি ভুল। IgnoreRouteএমভিসির রাউটিং কনফিগারেশনে রাখার কারণটি নিশ্চিত করে যে এমভিসি অনুরোধটি পরিচালনা করার চেষ্টা করে না। এটি কারণ স্ক্রিপ্টগুলি পরিবেশন করার জন্য .axdএন্ডপয়েন্টগুলি অন্য এইচটিটিপি হ্যান্ডলার দ্বারা পরিচালিত হওয়া প্রয়োজন (হ্যান্ডলার যা এমভিসির অংশ নয় )।
নাইটওয়েল 888

4
। নেট কোরটিতে এটি কি সম্পূর্ণ অপ্রয়োজনীয়? আমি গুগলে এক ঘন্টা বা তার জন্য অনুসন্ধান করেছি এবং সমমানের পদক্ষেপগুলি কী হবে তার জন্য আমি কোনও রেফারেন্স পাই না, সুতরাং আমি ধরে নিচ্ছি যে এটি কেবল প্রয়োজন নেই।
ডিনারডো

35

কিছু ব্যাকগ্রাউন্ড

আপনি যদি এই ফাইলটি খোলেন:

%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...&amp;t=6342..." type="text/javascript"></script>

AssemblyResourceLoaderসমাবেশ যেখানে জাভাস্ক্রিপ্ট querystring মধ্যে তথ্য ব্যবহার করে এমবেড করা হয় খুঁজে পেতে এবং জাভাস্ক্রিপ্ট ফিরে আসবে।


প্রশ্ন ফিরে

সুতরাং প্রশ্নের উত্তর দিতে, কি:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

এটি রাউটিং ইঞ্জিনকে জানিয়ে দিচ্ছে যে আমরা সেই রুট প্যাটার্নের সাথে মিলে এমন অনুরোধগুলি প্রক্রিয়াকরণ করব না। অন্য কথায়, আমরা .axdঅনুরোধগুলি প্রক্রিয়া করব না । কেন? কারণ এমভিসি নিজেই একটি এইচটিপিহ্যান্ডলার .axdএবং একই সাথে .aspxএবং অনেকগুলি ওয়েব হোল্ডার যা ওয়েবকনফিগ ফাইলে রয়েছে। এমভিসি হ্যান্ডলার অনুরোধটি যেমন AssemblyResourceLoaderকীভাবে কোনও সমাবেশে এম্বেড থাকা সংস্থান সন্ধান করতে চান তা কীভাবে জানেন তা জানেন না that কীভাবে এটি করতে হয়। এমভিসি কীভাবে করতে হয় তা জানে এবং ভাল করে যা কিছু করে তা এই প্রশ্নোত্তর এবং উত্তরের বাইরে নয়।


4
এটি অবশ্যই নিখুঁতভাবে গ্রহণযোগ্য উত্তর হওয়া উচিত, আমার কাছ থেকে আরও একটি।
ইয়াহিয়া

অবশেষে, ওয়েবআরসোর্স.এক্সডি আসলে কী করে তার একটি স্পষ্ট ব্যাখ্যা যখন প্রশ্নেরও স্পষ্ট উত্তর প্রদান করে। আপনাকে ধন্যবাদ
ben_mj

18

প্যাটার্ন {রিসোর্স} .axd / {* pathInfo with সহ সেই রুটটি ওয়েব রিসোর্স.এক্সডি বা স্ক্রিপ্টআর.সোর্স.এক্সডি হিসাবে ওয়েব রিসোর্স ফাইলগুলির জন্য একটি নিয়ামকের কাছে যেতে বাধা দেওয়ার জন্য অন্তর্ভুক্ত করা হয়েছে।

লিঙ্কটি পড়ুন: http://msdn.microsoft.com/en-us/library/cc668201%28v=vs.100%29.aspx

আপনি উল্লেখ করতে পারেন যে রাউটিংয়ের নির্দিষ্ট URL টির অনুরোধগুলি পরিচালনা করা উচিত নয়। আপনি কোনও রুট সংজ্ঞায়িত করে এবং নির্দিষ্ট করে যে স্ট্রপআউটিংহ্যান্ডলার শ্রেণিটি সেই প্যাটার্নটি পরিচালনা করতে হবে সেগুলি দ্বারা নির্দিষ্ট অনুরোধগুলি পরিচালনা করতে বাধা রোধ করছেন । যখন কোনও অনুরোধ স্টপআউটিংহ্যান্ডলার অবজেক্ট দ্বারা পরিচালনা করা হয় , তখন স্টপআর্টিংহ্যান্ডলার অবজেক্ট অনুরোধের কোনও অতিরিক্ত প্রক্রিয়াটিকে রুট হিসাবে আটকায় । পরিবর্তে, অনুরোধটি ASP.NET পৃষ্ঠা, ওয়েব পরিষেবা বা অন্যান্য এএসপি.এনইটি শেষ পয়েন্ট হিসাবে প্রক্রিয়া করা হয়। আপনি স্টোরআউটিংহ্যান্ডলার ক্লাসটি ব্যবহার করে এমন রুট তৈরি করতে রুট কালেকশন ব্যবহার করুন method পদ্ধতি (বা রুটকলিফিকেশন এক্সটেনশনস M এমভিসি অ্যাপ্লিকেশনগুলির জন্য অগ্রাহ্য করুন ) উপেক্ষা করুন



7

এগুলি ফাইল নয় (এগুলি ডিস্কে নেই) - এগুলি কেবল এমন নাম যা কিছু HTTP হ্যান্ডলার নিবন্ধভুক্ত রয়েছে।


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