url rewriting - एएसपी.नेट कोर आरसी 2 में यूआरएल पुन: लिखना




url-rewriting asp.net-core (2)

मैं ASP.NET कोर आरसी 2 में यूआरएल पुन: लिखना कैसे प्राप्त कर सकता हूं? आरसी 1 से आरसी 2 तक माइग्रेट करना मेरे कोनेर 2 रूटिंग को तोड़ दिया जब मैं पेज रिफ्रेश करता हूं

मैं इस तरह से एक नियम का उपयोग कर रहा था जो मेरे web.config में मेरी wwwroot में स्थित था। आरसी 2 के साथ मुझे यह भी यकीन नहीं है कि अगर मुझे अपने wwwroot में एक वेब। कॉन्फ़िग होना चाहिए, या यदि मुझे अपनी परियोजना के आधार में एक होना चाहिए तो

यह मेरा आधार web.config है

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" forwardWindowsAuthToken="true" stdoutLogEnabled="true" />
  </system.webServer>
</configuration>

और यह मेरी wwwroot web.config है

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!--Redirect selected traffic to index -->
        <rule name="Index Rule" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/api/" negate="true" />
            <add input="{REQUEST_URI}" matchType="Pattern" pattern="^/account/" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

जब मैं एक कोणीय 2 मार्ग को रीफ़्रेश करता हूं, मुझे एक Status Code: 404; Not Found मिलता है Status Code: 404; Not Found एएसपी.नेट से Status Code: 404; Not Found


मुझे सटीक एक ही समस्या थी वास्तव में, मेरे लिए, आईआईएस एक्सप्रेस सर्वर भी तब शुरू नहीं हुआ जब पुनर्लेखन नियम web.config फ़ाइल में शामिल किया गया था। यह देखते हुए मैंने फिर से लिखना नियमों पर भरोसा किए बिना एक ही चीज़ करने के लिए कुछ अन्य तरीके से चारों ओर खोदा। मैंने पाया कि आप MapWhen का उपयोग कर सकते हैं जब आपके स्टार्टअप सीसी फ़ाइल में फ़ंक्शन MVC द्वारा index.html को वापस नहीं भेजा जाता है।

ऐप के बाद स्टार्टअप सीसीएस क्लास की कॉन्फ़िगर विधि में नीचे कोड जोड़ा गया है। यूसेएमवीसी () कॉल

        app.UseMvc();

        // this serves "index.html" from the wwwroot folder when 
        // a route not containing a file extension is not handled by MVC.
        app.MapWhen(context =>
        {
            var path = context.Request.Path.Value.ToLower();
            return path.Contains(".");
        },
            branch =>
            {
                branch.Use((context, next) =>
                {
                    context.Request.Path = new PathString("/index.html");
                    return next();
                });

                branch.UseStaticFiles();
            });

अब तक यह अपने काम की तरह लग रहा है लेकिन मुझे कुछ और परीक्षण करने की आवश्यकता है ताकि यह देखा जा सके कि क्या कोई साइड इफेक्ट है। निजी तौर पर फिर से लिखना नियम एक बेहतर समाधान लग रहा था, लेकिन यह मुझे इस मुद्दे से गुजरने के लिए प्रतीत होता है।


मुझे स्टीव सेंडरसन का समाधान मिला, काम करने के लिए लगता है उन्होंने रूटेबिल्डर को विस्तार लिखा है आप इसे विस्तार विधि MapSpaFallbackRoute पर कॉल करके Setup.cs में कॉन्फ़िगर कर सकते हैं

https://github.com/aspnet/JavaScriptServices

app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
                routes.MapSpaFallbackRoute("spa-fallback", new { controller = "Home", action = "Index" });
            });






asp.net-core