URL এ থাকা বিন্দুগুলির জন্য ASP.NET এমভিসি এবং আইআইএস দিয়ে 404 হয়


303

আমার একটি প্রকল্প রয়েছে যার জন্য আমার ইউআরএলগুলির পথে বিন্দু থাকতে হবে। উদাহরণস্বরূপ আমার কাছে www.example.com/people/michael.phelps এর মতো ইউআরএল থাকতে পারে

ডট সহ ইউআরএলগুলি 404 উত্পন্ন করে My আমার রাউটিংটি ভাল fine আমি যদি বিন্দু ছাড়াই মাইকেলেলফেল্পগুলিতে পাস করি তবে সমস্ত কিছু কাজ করে। আমি যদি বিন্দুটি যুক্ত করি তবে আমি 404 ত্রুটি পাই। আইআইএস 8 এক্সপ্রেসের সাথে উইন্ডোজ 7 এ স্যাম্পল সাইটটি চলছে। ইউআরএলস্ক্যান চলছে না।

আমি আমার ওয়েবকনফাইগে নিম্নলিখিতগুলি যুক্ত করার চেষ্টা করেছি:

<security>
  <requestFiltering allowDoubleEscaping="true"/>
</security>

দুর্ভাগ্যক্রমে এটি কোনও পার্থক্য করেনি। আমি কেবল একটি 404.0 পাওয়া যায়নি পাওয়া ত্রুটি পেয়েছি।

এটি একটি এমভিসি 4 প্রকল্প তবে আমি এটি প্রাসঙ্গিক বলে মনে করি না। আমার রুটিংটি সূক্ষ্মভাবে কাজ করে এবং আমি যে পরামিতিগুলি প্রত্যাশা করি সেগুলি সেখানে থাকে, যতক্ষণ না সেগুলিতে একটি বিন্দু অন্তর্ভুক্ত থাকে।

আমার ইউআরএলটিতে বিন্দু থাকতে পারে তাই আমাকে কী কনফিগার করতে হবে?


93
বিশ্বাস করতে পারি না যে আমি এইটির জন্য এতটা সময় ব্যয় করেছি। আমি যদি একটি পিছনে স্ল্যাশ যুক্ত করি তবে URL টি ঠিকঠাক কাজ করে। উদাহরণস্বরূপ, www.example.com/people/michael.phelps/ তবে পিছনে স্ল্যাশ ছাড়াই আইআইএস 404 ত্রুটি ছুড়ে দেয়।
চিহ্নিত করুন

15
চিহ্নিত করুন - কারণ এটি পিছনে স্ল্যাশ ছাড়াই, আইআইএস মনে করে যে এটি এমন একটি ফাইল যা এটি গিয়ে খুঁজে পাওয়া উচিত। স্ল্যাশ যুক্ত করার প্রভাব রয়েছে ... এটি আসল ফাইল নয়। অতিরিক্তভাবে, নীচের কনফিগারেশন বিকল্পটি আইআইএসকে বলে যে এটি যদি ফাইল না হয় তবে পরিবর্তে এটি রুট করার চেষ্টা করুন।
টমি

আমি আমার প্রকল্পকে এমভিসি 4 + এসপ নেটওয়ারি 4.5 তে আপডেট করার পরেও একই সমস্যা হচ্ছে।
টেদেউ মিয়া

চারপাশের কাজ হিসাবে আমি আমার ইউআরএলগুলিতে ট্রেলিং স্ল্যাশ যুক্ত করতে আইআইএস পুনর্লিখন ব্যবহার করছি।
চিহ্নিত করুন Mark

4
এটি আমার পক্ষে কাজ করে না। "" দিয়ে URL টি দুর্দান্ত কাজ করে। ইউআরএল এর মধ্যে তবে এটি যখন একেবারে শেষ হয় তখন এটি একটি ত্রুটি দেয়
আর্কিডিয়ান

উত্তর:


379

আমি আমার সাইটের এইচটিটিপি হ্যান্ডলারগুলি সম্পাদনা করে এই কাজটি পেয়েছি। আমার প্রয়োজনের জন্য এটি ভাল কাজ করে এবং আমার সমস্যা সমাধান করে।

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

উদাহরণস্বরূপ। নেট নেট ইউআরএল প্রক্রিয়া করার জন্য www.example.com/people/michael.phelpssystem.webServer / handlers উপাদানটির মধ্যে আপনার সাইটের ওয়েবকনফিগের সাথে নিম্নলিখিত লাইনটি যুক্ত করুন :

<add name="ApiURIs-ISAPI-Integrated-4.0"
     path="/people/*"
     verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
     type="System.Web.Handlers.TransferRequestHandler"
     preCondition="integratedMode,runtimeVersionv4.0" />

সম্পাদন করা

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


3
এই উত্তরের উপর ভিত্তি করে এখানে স্ট্যাকওভারফ্লো.com/ a/ 16607685/801189 একটি সম্পূর্ণ উদাহরণ রয়েছে
ভিবি

10
এটি [path = "*"] দিয়ে কোনও স্ট্যাটিক ফাইল যেমন .css, .js তে সমস্ত অনুরোধগুলি ব্যর্থ হওয়ার পরে ব্যর্থ হয়। আমার একটি কাস্টম রুট রয়েছে যা url পরিচালনা করে যা এই " ডোমেন / ABCDE.FGHIJ " এর মতো দেখায় । আমার সমস্ত স্থিতিশীল ফাইলগুলি আমার / সামগ্রী ডিরেক্টরিতে রয়েছে। এটি থেকে পুরো ডিরেক্টরিটি বাদ দেওয়ার কোনও উপায় আছে কি? সত্য কাজগুলিতে র‌্যামএমএফএআর স্থাপন করা হচ্ছে তবে আমি সেই ওভারহেড এড়াতে চাই।
ল্যামারেন্ট

2
স্থানীয় আইআইএস স্ল্যাশ শুরু করার সাথে কাজ করে, তবে আইআইএস 8 কেবল প্রথম স্ল্যাশ ছাড়াই রুটটি বুঝতে পারে।
পাভেল ভোরোনিন

2
আমার @ ইল্যামেন্টের মতো একই সমস্যা রয়েছে ... এটি স্ট্যাটিক ফাইলগুলি অবরুদ্ধ করে। তুমি কি জানো কেন? এখানে এমভিসি 4 ব্যবহার করে।
ইস্টেইন

3
এটি এমভিসি 5 তে কাজ করে, তবে আপনি যদি পথের শুরুতে স্ল্যাশ রাখেন তবে এটি কেবল তখনই কাজ করবে যখন পাথটি হোস্টনামের সাথে সাথেই হবে (এটি অ্যাপ ফোল্ডারের সাথে সম্পর্কিত নয়)। উদাহরণস্বরূপ পাথ / লোক / * www.example.com/people/michael.phelps এর জন্য কাজ করবে তবে www.example.com/app/people/michael.phelps এর জন্য নয়। এএফআইকে অ্যাপটিকে আপেক্ষিকভাবে পাথ তৈরি করার কোনও উপায় নেই।
হোগান

46

কিছুক্ষন হাঁক দেওয়ার পরে আমি দেখতে পেলাম যে রিল্যাক্সড আর্কলটোফিলসিস্টেমম্যাপিং আমার পক্ষে মোটেও কাজ করে না, আমার ক্ষেত্রে যা কাজ করেছে তা র‌্যামএমএফএআর সেট করে সত্যে, এটি (.NET 4.0 + mvc3) এবং (.net 4.5 + mvc4) এর জন্য বৈধ।

<system.webserver>
    <modules runAllManagedModulesForAllRequests="true">

RAMMFAR এবং পারফরম্যান্স সম্পর্কে র‌্যামএমএফএআর সত্যিকারের হ্যান্সেলম্যান পোস্ট সেট করার সময় সচেতন হন


5
র‌্যামএমএফএআর সেট করার সময় সচেতন থাকুন ... আমি যদি এই <মডিউলগুলি চালিয়ে যাচ্ছি সমস্ত ম্যানেজডমডিউলগুলিঅলআরকিস্টেসস = "সত্য">
শঙ্কর

1
মূল পোস্টারের ক্ষেত্রে এটির প্রয়োজন হবে না, যেহেতু তিনি আইআইএস 7 এবং তারপরেরটি ব্যবহার করছেন। সেখানে এটি ডিফল্ট এবং র‌্যামএমএফএআর সেট করা সত্যিই আপনাকে বহন করতে ব্যয় করে। এমএসডিএন.মাইক্রোসফটকম
রিচার্ড

যদিও এটি দরকারী, আমার জন্য এমভিসি 5 / আইআইএস 7 এ 404 সেকেন্ড ফেরত দেওয়া বন্ধ করার জন্য পিরিয়ডগুলি পাওয়ার পক্ষে যথেষ্ট ছিল না।
ক্রিস মোসচিনি

কেবল পুনরাবৃত্তি করার জন্য this আপনি এই বিকল্পটি চালু করা এড়াতে চান
স্ট্রেক

যদি সম্ভব হয় তবে কোনও লাইভ সাইটে এটি করবেন না।
নিকজি

27

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

<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true" />

নীচের মন্তব্যগুলি থেকে সম্পাদনা করুন , .NET / IIS পরবর্তী সংস্করণগুলিতে এটি system.WebServerউপাদান হতে পারে ।

<system.webServer>
<httpRuntime relaxedUrlToFileSystemMapping="true" />

2
আমার এমভিসি 3 + নেট নেট 4.0 এর সাথে এটি ছিল এবং সুন্দরভাবে কাজ করেছে, তবে এমভিসি 4 +। নেট 4.5 এর সাথে আর কাজ করবে না।
টেদেউ মিয়া

4
আমি সাফল্য ছাড়াই রিল্যাক্সড ইউআরএলটিওফাইলে সিস্টেমম্যাপিং চেষ্টা করেছি। আমি মনে করি না এটি এমভিসির নতুন সংস্করণগুলির সাথে কাজ করে।
চিহ্নিত করুন

এটি আমাকে url /WEB-INF./web.xml ধরতে এবং কাস্টম ত্রুটির পৃষ্ঠায় পুনর্নির্দেশের অনুমতি দেয় যখন আমি চেষ্টা করেছিলাম যে আরও অনেকগুলি উপায় কাজ করে না।
কোয়ান্টিন-স্টারিন

3
মজাদার. প্রদত্ত যে এটি আপনার পক্ষে কাজ করে না, আমি ধরেই নিয়েছিলাম যে এটি আমার পক্ষে কাজ করবে না ... প্রদত্ত আমি .NET4.5 সহ এমভিসি 4 তে আছি। কিন্তু বিনগো, এটি যাইহোক কাজ করেছিল। আমার ক্ষেত্রে আমার পিরিয়ড সহ একটি URL ছিল। " শেষ চরিত্র হিসাবে। আমি 404 পেয়ে যাচ্ছিলাম তবে এটি এটি স্থির করেছে।
পান্ডাউড

তার কি সুরক্ষার কারণ আছে?
Paesano2000

23

আমি কোনও লাভ ছাড়াই সমস্ত ভিন্ন প্রতিকার অনুসরণ করে দীর্ঘদিন ধরে এই সমস্যাটিতে আটকে আছি।

আমি লক্ষ্য করেছি যে বিন্দুযুক্ত ইউআরএলটির শেষে [/] একটি ফরোয়ার্ড স্ল্যাশ যুক্ত করার সময় [।], এটি একটি 404 ত্রুটি ফেলেনি এবং এটি আসলে কাজ করেছিল।

আমি অবশেষে আইআইএস ইউআরএল পুনর্লিখনের মতো কোনও ইউআরএল পুনরায় লেখক হিসাবে নির্দিষ্ট প্যাটার্নটি দেখতে এবং প্রশিক্ষণের স্ল্যাশ যুক্ত করতে সমস্যা সমাধান করেছি।

আমার ইউআরএলটি দেখতে দেখতে: / পরিচিতি / প্রথম নাম.স্তৃত নাম তাই আমার প্যাটার্নটি সহজ: / যোগাযোগ / ~(.* ^/^)/

আমি স্কট Forsyth, এই ধারণা পেয়েছেন, নীচের লিঙ্কটি দেখুন: http://weblogs.asp.net/owscott/handing-mvc-paths-with-dots-in-the-path


এটি আমার জন্য (এমভিসি 5) কাজ করেছে। উপরের অন্যান্য পরামর্শগুলি কার্যকর হয়নি, এবং প্রয়োজন হয়নি, কেবল একটি পিছনের স্ল্যাশ। @ Jonduncan05 এর পরামর্শ অনুসারে আমি আমার রুটগুলি এখানে পরিবর্তন করব ।
মার্কা

আপনাকে ধন্যবাদ লিওন আমার জন্য দিন বাঁচিয়েছে। এখানে প্রায় কথা বলার আশেপাশের সমস্ত ওয়েবকনফাইগ স্টাফ সম্পর্কে নিশ্চিত নয়, তবে আমার অনুগ্রহটি উত্তরটি অনুসরণ করবে / ছিল। আমার ক্ষেত্রে, সার্ভার-সাইড নিয়ামক এবং জাভাস্ক্রিপ্ট যে এটি কল করছিল তার উপর আমার নিয়ন্ত্রণ রয়েছে, তাই আমি কেবল জাভাস্ক্রিপ্ট এবং ভয়েলা আপডেট করেছি!
ফ্রগ প্রিন্স

21

কেবলমাত্র এই বিভাগটি ওয়েবকনফিগটিতে যুক্ত করুন, এবং পথ / {* পাথইনফো route রুটের সমস্ত অনুরোধগুলি নির্দিষ্ট হ্যান্ডলার দ্বারা পরিচালনা করা হবে, এমনকি প্যাথআইনফোতে ডট থাকলেও। (সার্ভিস স্ট্যাক এমভিসি হোস্ট ওয়েবকনফিগ উদাহরণ এবং এই উত্তরটি https://stackoverflow.com/a/12151501/801189 থেকে নেওয়া )

এটি আইআইএস 6 এবং 7 উভয়ের জন্যই কাজ করা উচিত আপনি 'যোগ' উপাদানগুলিতে পাথ = "*" সংশোধন করে 'রুট' এর পরে বিভিন্ন পাথগুলিতে নির্দিষ্ট হ্যান্ডলারগুলি নির্ধারণ করতে পারেন

  <location path="route">
    <system.web>
      <httpHandlers>
        <add path="*" type="System.Web.Handlers.TransferRequestHandler" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" />
      </httpHandlers>
    </system.web>
    <!-- Required for IIS 7.0 -->
    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true" />
      <validation validateIntegratedModeConfiguration="false" />
      <handlers>
        <add name="ApiURIs-ISAPI-Integrated-4.0" path="*" type="System.Web.Handlers.TransferRequestHandler" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" preCondition="integratedMode,runtimeVersionv4.0" />
      </handlers>
    </system.webServer>
  </location>

2
রান অল ম্যানেজডমডিউলসফোরআলআরকিউয়েস্টস (র‌্যামএমএফএআর) এর কার্যকারিতা পরিণতি থেকে সাবধান থাকুন। এটি প্রতিটি অনুরোধের জন্য সমস্ত পরিচালিত মডিউল সক্ষম করবে। স্ট্যাটিক ফাইলগুলি, যেমন চিত্রগুলি আইআইএস দ্বারা সরাসরি প্রক্রিয়া করা যায় তবে এটি প্রতিটি মডিউলের মাধ্যমে প্রতিটি অনুরোধে ওভারহেড যুক্ত করে তাদের প্রক্রিয়া করে।
চিহ্নিত করুন

@চিহ্ন. হ্যাঁ, তবে আমি বিশ্বাস করি যে এটি যদি কেবলমাত্র <লোকেশন> বিভাগটি ব্যবহার করে এবং প্রধান <system.webServer> বিভাগে রানআলম্যানেজডমডিউলসঅলআরএকগুলি সেট না করে তবে এটি রুট করার / / ... র অনুরোধকে প্রভাবিত করবে believe
ভিবি

@ ভিবি আমার কাছে মনে হয় কেবল হ্যান্ডলারই যথেষ্ট, যদি না আপনার সিস্টেমে এমন ফাইল থাকে যা কোনও ইউআরএল এর সাথে মেলে না N নেটটি প্রক্রিয়া করার কথা। এবং কোনও কারণে, র‌্যামএমএফএআর <লোকেশন> স্তরে কাজ করেনি, তবে হ্যান্ডেলার সমাধানটি করেছে।
ওয়েবএক্সএল

@ ওয়েবেএক্সএল <লোকেশন> দরকার যখন আপনি এমভিসি কোনও নির্দিষ্ট রুটে অনুরোধগুলি প্রক্রিয়াকরণ করতে এবং রুটগুলি যুক্ত করতে চান না gn তারপরে আইআইএস অবস্থান বিভাগ <অবস্থানের পথ = "রুট"> সন্ধান করবে এবং অবস্থান বিভাগে নির্দিষ্ট হ্যান্ডলারগুলি ব্যবহার করবে তবে এটি এমভিসির রাউটিং এবং এমভিসির অন্যান্য পাইপলাইন ধাপগুলি পুরোপুরি বাইপাস করবে। আমার প্রকল্পে সার্ভিসস্ট্যাক এপিআই কেবল সেটআপ ব্যতীত কাজ করে না।
ভিবি

হ্যান্ডলারটির কাজটি কেন যুক্ত করবেন না? আমার ক্ষেত্রে, আমাকে হ্যান্ডলারের সাথে র‌্যামএমএফএআর যুক্ত করতে হবে। এখানে কিছু ভাল ব্যাখ্যা খুঁজছেন। :)
আদিত্য পাতিল

6

এমভিসি 5.0 কর্মক্ষেত্র।

প্রস্তাবিত অনেক উত্তর এমভিসি 5.0 তে কাজ করছে বলে মনে হয় না।

যেহেতু শেষ বিভাগে 404 ডট সমস্যাটি এই বিভাগটিকে একটি অনুসরণীয় স্ল্যাশ দিয়ে বন্ধ করে সমাধান করা যেতে পারে, এখানে আমি যে পরিষ্কার কৌশলটি ব্যবহার করছি তা পরিষ্কার simple

আপনার দৃষ্টিতে কোনও সুবিধাজনক স্থানধারক রাখার সময়:

@Html.ActionLink("Change your Town", "Manage", "GeoData", new { id = User.Identity.Name }, null)

কাজটি পেতে একটু jquery / জাভাস্ক্রিপ্ট যুক্ত করুন:

<script>
    $('a:contains("Change your Town")').on("click", function (event) {
        event.preventDefault();
        window.location.href = '@Url.Action("Manage", "GeoData", new { id = User.Identity.Name })' + "/";
    });</script>

অনুগ্রহ করে পিছনের স্ল্যাশটি নোট করুন, এটি পরিবর্তনের জন্য দায়ী

http://localhost:51003/GeoData/Manage/user@foo.com

মধ্যে

http://localhost:51003/GeoData/Manage/user@foo.com/

5

কেবলমাত্র একটি ওয়েবপৃষ্ঠায় এটির জন্য দুর্দান্ত সহজ উত্তর। আপনার অ্যাকশন লিঙ্ক এবং এর শেষে একটি "+" সম্পাদনা করুন।

  @Html.ActionLink("Edit", "Edit", new { id = item.name + "/" }) |

আমার জন্য এটি সমাধান! সরল ও মার্জিত! সবচেয়ে বিরক্তিকর হ'ল এটি বিকাশের সময় উইন্ডোজ 10 এ '/' ছাড়াই কাজ করে তবে উইন্ডোজ 2012 এর জন্য এটি প্রয়োজনীয় মনে হয়েছে।
উইম টেন ব্রিংক

2

আপনি পিরিয়ডের পরিবর্তে ড্যাশ ব্যবহার সম্পর্কে ভাবতে চাইতে পারেন।

ইন প্রো এএসপি MVC 3 ফ্রেমওয়ার্ক তারা বন্ধুত্বপূর্ণ URL গুলি তৈরীর সম্পর্কে এই সুপারিশ:

প্রতীক, কোড এবং চরিত্রের ক্রম এড়িয়ে চলুন। আপনি যদি কোনও শব্দ বিভাজক চান তবে একটি ড্যাশ (/ আমার-দুর্দান্ত-নিবন্ধ) ব্যবহার করুন। অ্যান্ডস্কোরগুলি বন্ধুত্বপূর্ণ এবং URL- এনকোড থাকা স্থানগুলি উদ্ভট (/ আমার + দুর্দান্ত + নিবন্ধ) বা জঘন্য (/ আমার% 20 গ্রেট% 20 পার্টিকেল)।

এটি আরও উল্লেখ করেছে যে ইউআরএলগুলি মানুষের পক্ষে পড়া এবং পরিবর্তন করা সহজ হওয়া উচিত। সম্ভবত একটি বিন্দুর পরিবর্তে ড্যাশ ব্যবহার করার বিষয়ে ভাবার কারণও একই বই থেকে এসেছে:

এইচটিএমএল পৃষ্ঠাগুলির (.aspx বা .mvc) জন্য ফাইলের নাম এক্সটেনশনগুলি ব্যবহার করবেন না তবে এগুলি বিশেষায়িত ফাইল প্রকারের (.jpg, .pdf, .zip, ইত্যাদি) জন্য ব্যবহার করবেন না। আপনি যদি মাইম টাইপটি যথাযথভাবে সেট করেন তবে ওয়েব ব্রাউজারগুলি ফাইলের নাম এক্সটেনশনের বিষয়ে চিন্তা করে না, তবে মানুষেরা পিডিএফ ফাইলগুলি পিপিএফ দিয়ে শেষ হওয়ার প্রত্যাশা করে

সুতরাং একটি সময়কাল এখনও মানুষের কাছে পঠনযোগ্য (যদিও ড্যাশগুলির চেয়ে কম পঠনযোগ্য, আইএমও), এখনও সময়ের পরে কী হবে তার উপর নির্ভর করে এটি কিছুটা বিভ্রান্তিকর / বিভ্রান্তিকর হতে পারে। যদি কারও জিপের শেষ নাম থাকে? তারপরে ইউআরএলটি / জন-জিপের পরিবর্তে / জন.জিপ হবে, এমন কিছু যা অ্যাপ্লিকেশনটি লিখেছিল এমন বিকাশকারীকেও বিভ্রান্ত করতে পারে।


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

আমি
এটির

স্পষ্ট কারণের জন্য বঞ্চিত: এটি প্রশ্নের উত্তর দেয় না। আমি যদি পারতাম তবে আমি আমার ইউআরএলগুলিতে পিরিয়ডগুলি উপস্থিত হতে দেব না। এগুলি উপস্থিত হয়, কারণ URL টি উত্পন্ন এবং মানব-পঠনযোগ্য হতে হবে।
এমজি

2

ক্যোরিস্ট্রিং ছাড়া আপনার ইউআরআই রাখা আপনার পক্ষে কতটা গুরুত্বপূর্ণ তা নির্ভর করে আপনি ইউআরআই নয়, ক্যোরিস্ট্রিংয়ের অংশ হিসাবে কেবল বিন্দু দিয়ে মানটিও দিতে পারেন।

উদাহরণস্বরূপ www.example.com/people?name=michael.phelps কোনও সেটিংস বা কিছু পরিবর্তন না করেই কাজ করবে।

আপনি একটি পরিষ্কার ইউআরআই থাকার কমনীয়তা হারাতে পারেন তবে এই সমাধানটির জন্য কোনও সেটিংস বা হ্যান্ডলারের পরিবর্তন বা সংযোজন প্রয়োজন হয় না।


1

আপনার ইউআরএল কাঠামো পরিবর্তন করা কি সম্ভব হবে?
আমি যা কাজ করছি তার জন্য আমি একটি রুট চেষ্টা করেছি

url: "Download/{fileName}"

তবে এটি যা কিছু দিয়ে ব্যর্থ হয়েছিল। এটা.

আমি রুটটি স্যুইচ করেছি

    routes.MapRoute(
        name: "Download",
        url:  "{fileName}/Download",
        defaults: new { controller = "Home", action = "Download", }
    );

এখন আমি রাখতে পারি localhost:xxxxx/File1.doc/Downloadএবং এটি কাজ করে fine

ভিউতে আমার সহায়করাও এটি গ্রহণ করেছেন

     @Html.ActionLink("click here", "Download", new { fileName = "File1.doc"})

এটি localhost:xxxxx/File1.doc/Downloadসেইসাথে বিন্যাসে একটি লিঙ্ক তৈরি করে ।

হতে পারে আপনি "/ ভিউ" এর মতো বিনা শর্তযুক্ত শব্দটি বা আপনার রুটের শেষের দিকে পদক্ষেপ রাখতে পারেন যাতে আপনার সম্পত্তি শেষের /মতো কিছু দিয়ে শেষ হতে পারে/mike.smith/view


1

এটি পথ পরিবর্তন করার মতোই সহজ = " ।" to path = " "। ওয়েবকনফিগে এক্সেনশনহীনউড়ল হ্যান্ডলার-ইন্টিগ্রেটেড -৪.০ এর জন্য কেবল বিন্দুটি সরান।

এখানে একটি নিবন্ধ https://weblog.west-wind.com/posts/2015/Nov/13/Serving- URLs-with- File- Extionss- in- an- ASPNET- MVC- প্রয়োগ


এই লিঙ্কটি আমাকে আমার সমস্যার সেরা সমাধানের দিকে নিয়ে গেছে (বিভাগটিতে "" "অক্ষর রয়েছে তবে ক্লায়েন্টরা" / "দিয়ে ট্রেল করবে না)। ওয়েবকনফিগের <system.webServer> - এ এই লাইনটি স্থির করে - <মডিউলগুলি চালিত AllManagedModules forAllRequests = "সত্য" />
নিকবিউজিé 22:59

1

উপরের সমস্ত সমাধান চেষ্টা করেছিলাম কিন্তু সেগুলির মধ্যে কেউই আমার পক্ষে কাজ করেনি। কাজটি কী ছিল আমি তার সমস্ত বহুভাষিক সংস্করণ সহ .NET সংস্করণ> 4.5 আনইনস্টল করছি; অবশেষে আমি নতুন (কেবলমাত্র ইংরেজী) সংস্করণ টুকরো টুকরো করে যোগ করেছি। আমার সিস্টেমে এখনই ইনস্টল করা সংস্করণগুলি হ'ল:

  • 2.0
  • 3.0
  • 3.5 4
  • 4.5
  • 4.5.1
  • 4.5.2
  • 4.6
  • 4.6.1

এবং এটি এখনও এই মুহুর্তে কাজ করে। আমি 4.6.2 ইনস্টল করতে ভয় পাচ্ছি কারণ এটি সবকিছু জগাখিচুড়ি করতে পারে।

সুতরাং আমি কেবল অনুমান করতে পারি যে হয় 4..6.২ বা সমস্ত অ-ইংরেজি সংস্করণগুলি আমার কনফিগারেশনটিকে বিশৃঙ্খলা করে।


0

Https://stackoverflow.com/a/13082446/1454265 এ সমাধানটি ব্যবহার করে এবং সমস্যার পরিবর্তনের জন্য আমি এই সমস্যার আমার নির্দিষ্ট সংস্করণটি (গ্রাহককে / গ্রাহকের কাছে / কাস্টমআর.এইচটিএমএল রুট তৈরি করতে হয়েছিল, স্ল্যাশগুলি ছাড়ার অনুমতি নেই) সমাধান করতে সক্ষম হয়েছিল এবং বিকল্পের পথ = "*। HTML"।


0

যেমন সমাধানটি এমন একটি বিন্যাসে এনকোডিংয়ের কথা বিবেচনা করা যেতে পারে যা .বেস 64 হিসাবে প্রতীক ধারণ করে না ।

জেএসে যুক্ত করা উচিত

btoa(parameter); 

নিয়ামক মধ্যে

byte[] bytes = Convert.FromBase64String(parameter);
string parameter= Encoding.UTF8.GetString(bytes);

0

Web.config সংরক্ষণাগারে ইউআরএল পুনর্লিখনের নিয়ম যুক্ত করুন। আপনার দরকার হবে URL টি লেখা মডিউল ইতিমধ্যে আইআইএস ইনস্টল। নিম্নলিখিত পুনর্লিখনের নিয়মটি আপনার নিজের জন্য অনুপ্রেরণা হিসাবে ব্যবহার করুন।

<?xml version="1.0" encoding="utf-8"?>
<configuration>

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Add trailing slash for some URLs" stopProcessing="true">
        <match url="^(.*(\.).+[^\/])$" />
          <conditions>
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Redirect" url="{R:1}/" />
      </rule>
    </rules>
    </rewrite>
</system.webServer>

</configuration> 

0

এছাড়াও, (সম্পর্কিত) আপনার হ্যান্ডলার ম্যাপিংয়ের ক্রম পরীক্ষা করুন। আমরা এরপথে একটি .svc (উদাহরণস্বরূপ /foo.asmx/bar.svc/path) সহ একটি .ashx পেয়েছিলাম। .Svc পাথের জন্য .svc ম্যাপিংটি প্রথমে 404 ছিল যা। এসএমএক্সের আগে মেলে। খুব বেশি ভাবেননি তবে সম্ভবত url এনকোডিং করা পথটি এই যত্ন নেবে।


-3
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    [RoutePrefix("File")]
    [Route("{action=index}")]
    public class FileController : Controller
    {
        // GET: File
        public ActionResult Index()
        {
            return View();
        }

        [AllowAnonymous]
        [Route("Image/{extension?}/{filename}")]
        public ActionResult Image(string extension, string filename)
        {
            var dir = Server.MapPath("/app_data/images");

            var path = Path.Combine(dir, filename+"."+ (extension!=null?    extension:"jpg"));
           // var extension = filename.Substring(0,filename.LastIndexOf("."));

            return base.File(path, "image/jpeg");
        }
    }
}

1
এই ওপির প্রশ্নের উত্তর কীভাবে দেয়? মনে মনে বর্ণনা দিচ্ছেন?
কেয়েস

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