如何在Asp.Net 5 MVC 6中检测用户是否在移动设备上?
在以前的版本中 Asp MVC可以这样做:
Request.Browser.IsMobileDevice
Run Code Online (Sandbox Code Playgroud)
问题是名称空间System.Web不被使用Asp.Net 5.
Request控制器操作中的变量现在是类型Microsoft.AspNet.Http.HttpRequest,旧版本是类型System.Web.HttpRequestBase.
Microsoft.AspNet.Http.HttpRequest不包含该Browser属性.我试着浏览其他属性,但没有找到任何东西.
编辑:根据要求,一些资源证明Asp.Net 5不再使用System.Web.来自Asp.Net文档
ASP.NET 5不再基于System.Web.dll,而是基于一组精心设计且考虑周全的NuGet包,允许您优化您的应用程序以满足您的需求.
这些功能的根本区别是什么?我所知道的全部三个结果都是201,这适用于成功的POST请求.
我只关注我在网上看到的例子,但他们并没有真正解释为什么他们正在做他们正在做的事情.
我们应该为我们的GET提供一个名称(id为1条记录):
[HttpGet("{id}", Name="MyStuff")]
public async Task<IActionResult> GetAsync(int id)
{
return new ObjectResult(new MyStuff(id));
}
Run Code Online (Sandbox Code Playgroud)
命名此get函数的目的是什么,除了它可能是以下POST函数所需的"可能":
[HttpPost]
public async Task<IActionResult> PostAsync([FromBody]MyStuff myStuff)
{
// actual insertion code left out
return CreatedAtRoute("MyStuff", new { id = myStuff.Id }, myStuff);
}
Run Code Online (Sandbox Code Playgroud)
我注意到CreatedAtRoute还有一个不包含路由名称的重载.
还有一个CreatedAtAction类似的参数.为什么存在这种变体?
还有Created一个期望URL和我们想要返回的对象.我可以使用这个变体并提供一个伪造的URL并返回我想要的对象并完成它并完成吗?
我不确定为什么有这么多的变种只是为了能够将201返回给客户端.在大多数情况下,我想要做的就是返回"app-assigned"(很可能来自数据库)唯一ID或具有最少信息的我的实体版本.
我认为最终,201响应"应该"创建一个位置标题,其中包含新创建的资源的URL,我相信所有3和它们的重载最终会完成.为什么我总是要返回一个位置标题?我的JavaScript客户端,本机移动和桌面应用程序从不使用它.例如,如果我发出HTTP POST来创建账单并将其发送给用户,这样的位置URL会是什么?(我很抱歉没有深入研究互联网的历史,为此寻找答案.)
为什么要为动作和路线创建名称?动作名称和路线名称之间有什么区别?
我对此感到困惑,所以我使用了Ok()返回200,这不适合POST.
似乎新的MVC(链接)中不支持动态捆绑,应该使用gulp任务来完成.MVC支持一些名为的新属性asp-append-version,但我没有找到任何关于它是如何工作的解释.我怀疑它正在计算文件内容的一些哈希值,甚至在文件更改后更新它.有没有关于它是如何工作的文件?
我也想知道它是如何检测文件更改或者它是否只是在每次MVC分析剃刀标记时重新计算哈希值.
新的ASP.NET Core框架使我们能够为不同的环境执行不同的html:
<environment names="Development">
<link rel="stylesheet" href="~/lib/material-design-lite/material.css" />
<link rel="stylesheet" href="~/css/site.css" />
</environment>
<environment names="Staging,Production">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.0.0/css/bootstrap.min.css"
asp-fallback-href="~/lib/material-design-lite/material.min.css"
asp-fallback-test-class="hidden" asp-fallback-test-property="visibility" asp-fallback-test-value="hidden"/>
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true"/>
</environment>
Run Code Online (Sandbox Code Playgroud)
但是,如何在_Layout.cshtml ASP.NET Core MVC Web应用程序中确定和可视化当前环境的名称?
例如,我想将环境名称(Production,Staging,Dev)可视化为HTML注释,以便进行调试:
<!-- Environment name: @......... -->
Run Code Online (Sandbox Code Playgroud) 假设我的网站托管在www.example.com的mywebsite文件夹中,我访问https://www.example.com/mywebsite/home/about.
如何在MVC控制器中获取基本URL部分?我正在寻找的部分是https://www.example.com/mywebsite
此处列出的示例不起作用,因为我们无法访问ASP.NET Core中的Request.Url
我一直在努力开展各种项目,显然微软一直在忙着做出一些重大改变,这让我感到很困惑.去年我安装Visual Studio 2017时,ASP.NET Core首次出现在我的雷达上,然后创建了一个新项目,突然选择了.NET Framework,.NET Standard和.NET Core.所以我稍微调查了一下,发现后两者在某种程度上是完整框架的缩写版本.我读过Scott Hanselman的这篇文章ASP.NET 5已经死了 - 介绍ASP.NET Core 1.0和.NET Core 1.0我也找到了这个,它让我远离ASP.NET Core:在ASP.NET和ASP.NET Core之间选择.我的内容是"核心是新的,你可以继续使用完整的框架." 所以我使用.NET Framework 4.6.2和Microsoft.AspNet.Mvc 5.2.3创建了一个新的ASP.NET MVC站点.
自从创建该项目以来,我发现MVC和实体框架中的一些错误似乎只是发现在网络上唯一提到它们似乎是在Core中,而这是他们被认为被修复的唯一地方.
现在,今天,我正在尝试查看System.Web.Mvc.Controller和System.Web.Mvc.JsonResult上的文档,除了Core文档之外它已经消失了.我终于把它挖到了这里,它说它不再被维护了?
我对Core 很了解,并说,"好吧,我为什么要关心?我会继续做我正在做的事情,并在完成后再检查一下." 但现在似乎不再支持4.6.2了.有人可以解释发生了什么吗?我的.NET 4.6.2/MVC 5.2.3项目现在已经过时了吗?如果没有,为什么文件已经退役并被隐藏起来?我担心我的某些依赖项甚至可能不适用于Core或与Core兼容.
我有一个ASP.NET MVC 6(beta-4)应用程序.
public void ConfigureServices(IServiceCollection services)
{
// Logging
services.AddLogging();
// ...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
{
// Add the console logger.
loggerfactory.AddConsole(minLevel: LogLevel.Warning);
// ...
}
Run Code Online (Sandbox Code Playgroud)
我有一个控制器......
public class HomeController :
Controller
{
ILogger _logger;
public HomeController(ILogger logger)
{
_logger = logger;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是当我没有以某种方式正确地注册服务时:InvalidOperationException: Unable to resolve service for type 'Microsoft.Framework.Logging.ILogger' while attempting to activate 'HomeController'..注册记录器我做错了什么?
我正在尝试使用上传图片MVC 6; 但是,我无法找到班级HttpPostedFileBase.我检查过GitHub,没有运气.有谁知道上传文件的正确方法MVC6?
虽然已经设置MaxRequestLength并maxAllowedContentLength在最大可能值web.config部分,ASP.Net核心不允许我才能上传大文件134,217,728 Bytes.来自Web服务器的确切错误是:
处理请求时发生未处理的异常.
InvalidDataException:超出了多部分主体长度限制134217728.
有没有办法解决这个问题?(ASP.Net核心)
我正在最新版本2.2上构建.NET Core MVC。更改CSHTML文件并刷新页面时出现问题,我的更改未反映在浏览器中。我必须重新启动项目才能看到我的更改。现在已经发生了一段时间,所以我不确定是什么变化导致了此问题。
我尝试使用Chrome浏览器的“空缓存和硬重载”以及其他浏览器都无济于事。在同时使用Visual Studio for Mac和VS Code的Windows和Mac上发生这种情况
在默认的.Net Core项目中,它工作正常,因此在我的项目中必须有所更改。我想知道从哪里开始才能调试此问题?我尝试注释掉几乎所有内容,Startup.cs并且Program.cs没有解决方法。
asp.net-core-mvc ×10
asp.net-core ×7
.net-core ×2
asp.net ×2
c# ×2
.net ×1
asp.net-mvc ×1
http-post ×1
logging ×1
view ×1