मुझे कई वेब एपीआई नियंत्रकों के साथ एक एएसपी.NET कोर एप्लिकेशन मिला है। मैं यह नहीं बता सकता कि कुछ कनेक्शन है या नहीं, लेकिन एप्लिकेशन को वीएस2015 अपडेट 2 के साथ बनाया गया था, और अब मैं वीएस2015 अपडेट 3 के साथ काम कर रहा हूं। इसलिए मैंने एक और वेब एपीआई नियंत्रक बनाया, और जब उस नियंत्रक को कोई प्रश्न होएएसपी.नेट कोर एप्लिकेशन को कॉन्फ़िगर करने में सही क्रम क्या है?
System.NotSupportedException: The given path's format is not supported.
at System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
at System.IO.Path.GetFullPath(String path)
at Microsoft.AspNet.FileProviders.PhysicalFileProvider.GetFullPath(String path)
at Microsoft.AspNet.FileProviders.PhysicalFileProvider.GetFileInfo(String subpath)
at Microsoft.AspNet.StaticFiles.StaticFileContext.LookupFileInfo()
at Microsoft.AspNet.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
at Microsoft.AspNet.Cors.Infrastructure.CorsMiddleware.<Invoke>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Microsoft.AspNet.Diagnostics.Entity.MigrationsEndPointMiddleware.<Invoke>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.<Invoke>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at Microsoft.AspNet.Diagnostics.Entity.DatabaseErrorPageMiddleware.<Invoke>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at Microsoft.AspNet.Diagnostics.DeveloperExceptionPageMiddleware.<Invoke>d__7.MoveNext()
अजीब बात यह है कि किसी भी तरह StaticFileMiddleware नियंत्रक को एक सरल अनुरोध पर कार्रवाई करने में शामिल है: मैं इस अपवाद हो रही है। मैंने पहले
app.UseStaticFiles()
मैं अभी भी पता करने के लिए कि यह कैसे हुआ चाहते
app.UseMvc(...
फोन करके आवेदन को विन्यस्त का क्रम परिवर्तित कर इस समस्या को ठीक कर सकते हैं और क्या आवेदन कॉन्फ़िगर करने की सही क्रम है है।
ध्यान रखें कि पहले से जोड़े गए नियंत्रक कॉन्फ़िगर करने के दोनों तरीकों से ठीक काम कर रहे हैं, लेकिन नया केवल बाद वाले के साथ काम कर सकता है।
नया नियंत्रक स्थैतिक फ़ाइलों के साथ काम नहीं करता है।
संपादित रूटिंग: नियंत्रक में:
[Route("api/[controller]")]
public class ViewsController : Controller
{
[HttpGet("{path}", Name = "Views")]
public async Task<IActionResult> Get(string path)
{
return Json("bla");
}
}
Startup.cs में:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "angular2app",
template: "ng/{*.}",
defaults: new { controller = "Home", action = "Index" });
routes.MapRoute(
name: "api",
template: "api/{controller}/{action}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
परेशान अनुरोध:
http://localhost:5000/api/Views/blablapath
कृपया "समस्या" का कारण बनने वाले नियंत्रक से कुछ कोड पोस्ट करें। –
यह बात है। नियंत्रक से कोड किसी भी परेशानी का कारण नहीं बनता है, क्योंकि कॉल नियंत्रक तक कभी नहीं पहुंचता है। अपवाद पहले होता है। –
नियंत्रक कोड के लिए पूछने का मेरा कारण यह है कि शायद ऐसा कुछ ऐसा है जो पिछले मौजूदा नियंत्रकों की तुलना में इसे "विशेष" बनाता है; रूट-एनोटेशन, विशेष नामकरण या जो कुछ भी ... –