আপনি কীভাবে এএসপি.নেট এমভিসিতে ~ / ভিউ ফোল্ডারের অধীনে স্ট্যাটিক .html ফাইলগুলির জন্য অনুরোধ করবেন?


92

আমি ফোল্ডারে .htmlঅবস্থিত স্থিতিশীল ফাইলগুলির অনুরোধ করতে সক্ষম হতে চাই ~/Views। ডকুমেন্টেশন অনুসারে, রাউটিং সিস্টেমটি কোনও URL টি অ্যাপ্লিকেশনগুলির রুটগুলি মূল্যায়নের আগে কোনও ডিস্ক ফাইলের সাথে মেলে কিনা তা পরীক্ষা করে দেখুন।

তবে আমি যখন ফাইলটি অনুরোধ করি তখন একটি 404ত্রুটি দেখা দেয়।

আমার ফাইলটি ~ / ভিউ ফোল্ডারে অবস্থিত। ইউআরএলটি হ'ল:http://[localhost]/Views/HtmlPage1.html

আমি কি মিস করেছি?

উত্তর:


111

আমি স্থিতিশীল। এইচটিএমএল ফাইলগুলির অনুরোধ করতে সক্ষম হতে চাই যা '~ / ভিউজ' ফোল্ডারে রয়েছে।

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

আপনার এমন একটি ~/Staticফোল্ডার থাকতে পারে যেখানে আপনি নিজের HTML ফাইল রাখতে পারেন। এবং তারপরে এটি অ্যাক্সেস করুন:

http://example.com/yourapplicationname/static/foo.html

4
অথবা, আপনার ফোল্ডারটির নাম 'স্থিতিশীল' রাখার পরিবর্তে আপনি দৃশ্যের ফোল্ডারের ভিতরে থাকা কন্ট্রোলার নামের কাঠামোটি নকল করতে পারেন .. সুতরাং URL টি একই 'উপস্থিতি' রয়েছে। উদাহরণস্বরূপ যেহেতু আপনি আপনার প্লেইজনে এডিট.ইচটিএমএলকে ভিউ / অর্ডার / এডিট.এইচটিএমএল রাখতে পারবেন না - আপনি এটিকে ~ / অর্ডার / edit.html এ রেখেছেন
bkwdesign

4
এটি এখন সর্বশেষতম ASP.NET (vNext) দিয়ে পরিবর্তিত হয়েছে যেখানে আপনি এইচটিএমএল ফাইলগুলির জন্য স্থিতিশীল সরবরাহকারীর নিবন্ধন করতে পারেন তবে এখনও সাধারণ এমভিসি পথে যেতে পারেন। শুধুমাত্র এটির সাথে একটি দ্রুত খেলা হয়েছিল তবে এটিই আমি একটি পরীক্ষার প্রকল্প দিয়েছিলাম। লিনাক্সে কেষ্টারেল দিয়ে চলছে .. তবে আইআইএসটি আমার ধারণা হিসাবে একই হওয়া উচিত।
পাইওটার কুলা

4
@bkwdesign আমি নিশ্চিত যে ফোল্ডারটির কাঠামোটি নকল করে এর কনফিগারেশনটি নিয়ন্ত্রিত হয়েছে তা আমার নিয়ন্ত্রকদের ডিফল্ট হ্যান্ডলারকে গোলযোগ করেছে এবং এটিকে অ্যাক্সেসযোগ্য করে তুলেছে। সুতরাং এই পরিস্থিতি পরীক্ষা করে দেখুন।
হান্টার-অরিওননোয়ার

78

ভিউ ফোল্ডারে জেএস এবং এইচটিএমএলের মতো ফাইলগুলিকে অনুমতি দেওয়ার জন্য ভিউ-ফোল্ডারে ওয়েবকনফিগ সম্পাদনা করুন:

<system.webServer>
<handlers>
  <add name="JavaScriptHandler" path="*.js" verb="*"
     preCondition="integratedMode" type="System.Web.StaticFileHandler" />      
  <add name="HtmlScriptHandler" path="*.html" verb="*"
     preCondition="integratedMode" type="System.Web.StaticFileHandler" />
  <remove name="BlockViewHandler"/>
  <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>


4
আমাকে "मार्गগুলি। রুটএক্সিংফায়ালস = সত্য" লাইনটি সরিয়ে ফেলতে হয়েছিল; রুটকনফিগ -রেগিস্টার এ কাজ করার জন্য রুটস
স্যাম সিপ্পি

চিহ্নিত উত্তরটিতে দরকারী তথ্য রয়েছে তবে এটি আরও ভাল উত্তর the আমার বর্তমান প্রকল্পে পরীক্ষিত এবং কাজ করছে।
এ। মারে

4
সিএসএস ফাইল সম্পর্কে কী?
Leandro

@ ডারিন দিমিত্রভের উত্তরটি একদম কার্যকর করেছে তবে এটি উত্তর হিসাবে চিহ্নিত করা উচিত
কুণাল

31

আমি স্থিতিশীল। এইচটিএমএল ফাইলগুলির অনুরোধ করতে সক্ষম হতে চাই যা ~ / দর্শনের ফোল্ডারে রয়েছে।

ভাল আপনি করতে পারেন। চিহ্নিত উত্তর সম্পূর্ণরূপে সঠিক নয়, যদিও এটি একটি সমাধান দেয়।

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

সুতরাং এখানে আপনার খুব সহজেই একটি সাম্প্রতিক কৌটাচিহ্ন যা আপনি নিজের এসপ নেটওয়্যার এমভিসি ভিউয়ের সুরক্ষার সাথে আপোষ না করে ভিউ ফোল্ডারে পাওয়া ওয়েবকনফিগ ফাইলটিতে করতে পারেন। এটি যথারীতি .cshtml ফাইলগুলি সুরক্ষিত করবে তবে আপনার .html ফাইলগুলিকে একা রেখে দেবে Aএ

এই পরিবর্তন

<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode"    type="System.Web.HttpNotFoundHandler" />

--প্রতি--

<add name="BlockViewHandler" path="*.cshtml" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

4
এটি এখনও .aspx বা .ascx ফাইল বা তৃতীয় পক্ষের ভিউ ইঞ্জিনগুলির মতো অন্য ফাইলগুলির সাথে বিপজ্জনক হতে পারে। সিএস 3 এক্স এর উত্তর অনুসারে হোয়াইটলিস্ট করা আরও অনেক ভাল।
pwdst

4
@pwdst: আপনি যদি সার্ভার সাইড ভিউয়ের মিশ্রণটি ব্যবহার করেন তবে হ্যাঁ পৃথক ধরণের শ্বেত তালিকাভুক্ত করা আরও ভাল। আমরা কেবল .cshtml ফাইলগুলি সুরক্ষিত করতে চাই তাই আমরা এটি ব্যবহার করেছি কারণ এটি কিছুটা কম ভার্বোস।
বিকাশ

14

অন্য বিকল্প বিকল্প হ'ল এইচটিএমএল ফাইল পরিবেশন করতে পছন্দসই নিয়ামকের যে কোনও একটিতে একটি ক্রিয়া পদ্ধতি sertোকানো

public ActionResult MyHtml()
{
    var result = new FilePathResult("~/Views/HtmlPage1.html", "text/html");
    return result;
}

এইচটিএমএলকে http: // thyite / নিয়ামক / MyHtML হিসাবে অ্যাক্সেস করুন । আপনি এইচটিএমএল ফাইলের নামটি পদ্ধতি / ক্যোরিস্ট্রিগাইন প্যারামিটার হিসাবে গ্রহণ করতে এবং রান সময় ফাইলটি রেন্ডার করতে এই ক্রিয়া পদ্ধতিটি প্রসারিত করতে পারেন, উদাহরণস্বরূপ এই জাতীয় কিছু।

 public ActionResult MyHtml(string htmlPageName)
 {
      var result = new FilePathResult($"~/Views/{htmlPageName}.html", "text/html");
      return result;
 }

0

যদি আপনি অভ্যন্তরীণ ভিউ ফোল্ডারটি ব্যবহার করার পরিকল্পনা করছেন তবে উপরের উত্তরগুলি সর্বোত্তম হওয়া উচিত তবে এই উত্তরটি ব্যবহারকারীদের পক্ষে কার্যকর হতে পারে যারা এসপ নেটওয়্যার এমভিসি কোরে স্থানান্তরিত হয়। ভিউও ফোল্ডারের পরিবর্তে wwwroot এ ফাইল স্থাপন করা আপনার HTML টি পৃষ্ঠাগুলিকে লোকালহোস্ট / মাইফাইল.html হিসাবে সহজে অ্যাক্সেস করা উচিত

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