我有一个在VS 2012中开发的ASP.NET MVC 4应用程序.该应用程序包含一个主项目(MyProject),一个单元测试项目(MyProject.Tests),一个Azure部署项目(MyProject.Azure),以及一些通用图书馆项目.
当我右键单击解决方案或主项目并选择Manage NuGet Packages时,我看到一堆微软的更新在过去一个月左右显然已经可用.如果我单击Update All按钮,那么显然安装的更新没有任何明显的问题,但是当我构建解决方案时,我收到此错误消息TWICE:
warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build
Run Code Online (Sandbox Code Playgroud)
好的,所以我有两个引用MyProject的项目:MyProject.Tests和MyProject.Azure.我可以右键单击MyProject.Tests,选择ManageNuGet Packages,然后添加Microsoft.Bcl.Build.这摆脱了两个警告中的一个.但VS没有给我一个选项来管理MyProject.Azure项目的NuGet包.
如何将Microsoft.Bcl.Build包添加到Azure部署项目?
编辑:
在VS 2017中,我创建了一个新的ASP.NET核心Web应用程序.在向导的第二页上,我选择了Web应用程序,对于身份验证,我选择了"个人用户帐户".
现在,我正在尝试找到与/ Account/Register和/ Account/Login相关联的页面.
_Layout.cshtml引入_LoginPartial.cshtml,就像在经典MVC中一样:
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a asp-page="/Index">Home</a></li>
<li><a asp-page="/About">About</a></li>
<li><a asp-page="/Contact">Contact</a></li>
</ul>
<partial name="_LoginPartial" />
</div>
Run Code Online (Sandbox Code Playgroud)
如果用户未登录,则_LoginPartial包含<a>
指向登录和注册页面的标记:
<ul class="nav navbar-nav navbar-right">
<li><a asp-area="Identity" asp-page="/Account/Register">Register</a></li>
<li><a asp-area="Identity" asp-page="/Account/Login">Login</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
这一切似乎都有道理.但我希望Areas文件夹结构包含Register和Login文件夹.它不是.我发现的唯一的东西是_ViewStart.cshtml
我知道脚手架代码有效,当我运行项目时,Register链接指向"/ Identity/Account/Register",Login链接指向"/ Identity/Account/Login".点击注册链接可以获得一个注册页面,其中包含"创建新帐户"文本.
但我无法在项目的任何地方找到"创建新帐户"文本.
有人能告诉我我错过了什么吗?
如果我运行SQL Server Management Studio,并告诉它连接到(localdb)\ v11.0,它知道我曾经使用的每个数据库,尽管大多数数据库文件早已消失.
如果我要求它删除其中一个数据库,它会抱怨它不能DROP数据库,因为数据库文件已经消失(duhhh).那么,我该如何清理这个混乱并删除所有数据库引用,这些数据库引用的辅助数据库文件已经消失了?
短发
可以SimpleMembership与使用EF模型的第一?当我尝试它时,我打电话时"无法找到所请求的.NET Framework数据提供程序"WebSecurity.InitializeDatabaseConnection.
换句话说:WebSecurity.InitializeDatabaseConnection
当连接字符串使用System.Data.EntityClient
提供者时,我无法接受调用(就像使用模型优先范例时那样).
要重新解决此问题,请创建一个MVC 4应用程序,并使用您在实体设计器中创建的模型优先用户类替换代码优先的 UserProfile实体类(使用MVC 4模板免费获得):
User
模型的新实体,其中包含字段Id,
UserName, and FullName
.因此,此时,User
数据实体被映射到Users
表,并通过使用System.Data.EntityClient
提供程序的时髦连接字符串进行访问.User
实体.一种简单的方法是基于User表及其关联的DbContext构建一个Users控制器.AccountModels.cs
文件以删除UserProfile
该类及其关联的UsersContext
类.使用对新User类及其关联类的引用替换对(现在缺少的)UserProfile
和UsersContext
类的引用DbContext
.我已经在Visual Studio 2013中为我的ASP.NET MVC解决方案添加了编码UI测试.我很惊讶地看到测试的运行速度有多慢; 在测试机器唤醒并开始填写表单字段之前,每个页面都会在那里停留一分钟或更长时间.
经过一些实验(包括关闭SmartMatch
),我发现只是打电话
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.Disabled;
Run Code Online (Sandbox Code Playgroud)
解决了这个问题.但是,正如预期的那样,测试经常失败,因为UI线程尚未准备好让测试机器与表单上的控件进行交互.
调用
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;
Run Code Online (Sandbox Code Playgroud)
如果缓慢,可以使测试可靠地运行.
有什么想法或建议吗?是否有人希望有人能够深入了解WaitForReady机器的魔力?还有其他任何与WaitForReady相关的设置WaitForReadyLevel
吗?
注意:此问题在最初发布几天后完全重写.
我有一个在VS 2012中开发的ASP.NET MVC应用程序,部署到Azure.原始项目是从ASP.NET MVC 4项目模板创建的.
NuGet最近开始展示微软的一系列更新软件包.其中一个更新,即Microsoft HTTP Client Libraries v2.1.10,在安装时会导致严重问题.
它安装了MicrosoftBcl.Build,它与我的Azure项目不兼容(请参阅此问题及其解决方案的问题).
它导致了一大堆"不兼容的DLL"问题(见下文).
这提出了几个燃烧的问题:
我的MVC应用只是一个网站.它只是在Web浏览器中运行.我需要这个包吗?(例如,它是否被模板代码使用,如果我删除包,它会破坏,可能是巧妙的?)
根据项目网站(http://blogs.msdn.com/b/bclteam/p/httpclient.aspx),该产品有几个较新的(尽管是测试版)版本.如果我告诉NuGet向我展示未发布的版本,我想我会看到它们.这些版本是否解决了上述问题?
以下是我在安装更新后的NuGet软件包后构建解决方案时收到的警告...
1>------ Build started: Project: Ruby, Configuration: Release Any CPU ------
1> All packages listed in packages.config are already installed.
1> No way to resolve conflict between "System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" and "System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35". Choosing "System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" arbitrarily.
1> Consider app.config remapping of assembly "DotNetOpenAuth.AspNet, Culture=neutral, PublicKeyToken=2780ccd10d57b246" from Version "4.0.0.0" [] to Version "4.3.0.0" …
Run Code Online (Sandbox Code Playgroud) 我是ASP.NET MVC的新手,我正在寻找最简单的方法来设置全局错误处理,记录和报告(通过电子邮件).仅供参考,我的ASP.NET MVC应用程序作为Azure中的Web角色托管,但我试图避免使用任何特定于Azure的钩子.
看起来安装和配置ELMAH是一个很好的第一步.
当我看着NuGet时,我看到:
我想安装以下哪些软件包?
编辑:经过一些实验,我更困惑.在默认的MVC 4应用程序之上安装了三个选项之后,我比较了项目文件.似乎Elmah.Contrib.Mvc和Elmah.MVC都没有添加elmah.1.2.2包(我在安装基本ELMAH时得到).此外,两个包都不会将该<elmah>
部分添加到Web.config.
那么......我是否需要首先安装ELMAH,然后安装一个"... MVC"软件包来获得他们可能得到的任何漂亮的改进?
ApplicationInsights最近开始向我发送每周遥测报告.我的问题是,它告诉我有一堆失败的请求,失败的依赖关系和异常,但当我点击分析失败时,我发现它们都与机器人或坏人尝试访问不存在的页面有关.我的网站.
是否有一种简单的方法告诉ApplicationInsights我对与尝试访问不存在的页面相关的指标不感兴趣?是的,我很欣赏每周遥测报告,但我不想花时间调查一类我认为是"误报"的经常报道的问题.
我正在努力理解与ASP.NET MVC连接的jQuery验证的一些基础知识.
这个问题的简短版本是:我遗漏了哪些魔法允许@Html.EditorFor()
执行jQuery验证所产生的代码,但不起作用我尝试使用完全相同的HTML连接我自己的jQuery验证?
作为一个学习练习(并且因为它模仿了我在网站上真正想做的事情),我在Visual Studio 2012中创建了一个新的MVC 4应用程序.我添加了一个视图模型:
using System.ComponentModel.DataAnnotations;
namespace ValidationTest.Models
{
public class MyViewModel
{
[Required]
public string MyStringValue { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
我修改了Views\Home\Index.cshtml来创建一个基于我的视图模型的表单,如下所示:
@model ValidationTest.Models.MyViewModel
@using (Html.BeginForm(new { id = "MyForm" })) {
@Html.LabelFor(m => m.MyStringValue)
@Html.EditorFor(m => m.MyStringValue)
@Html.ValidationMessageFor(m => m.MyStringValue)
<br />
<input type="submit" value="Submit" />
}
Run Code Online (Sandbox Code Playgroud)
最后,我修改了Home控制器,将视图模型提供给表单并处理相关的POST,如下所示:
using System.Web;
using System.Web.Mvc;
using ValidationTest.Models;
namespace ValidationTest.Controllers
{
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
var viewModel = new …
Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery jquery-validate unobtrusive-validation asp.net-mvc-4
每天一次,我希望我的ASP.NET MVC4网站(可能在多台服务器上运行)通过电子邮件向我发送报告.这似乎是一件很常见的事情,但是我很难想出一个好方法.
由于几个原因,尝试在服务器上运行计时器来完成这项工作是有问题的.如果我有多个服务器,那么我将在所有服务器上运行计时器(如果服务器出现故障); 我需要在它们之间进行协调,这很复杂.此外,尝试通过实体框架从后台线程访问数据库增加了复杂性,我必须使用锁定策略来序列化周期性后台线程和"前台"控制器线程之间的DbContext对象的构造/处置.
另一种选择是在服务器上运行计时器,但让计时器线程对生成报告的魔术页面执行GET.这解决了DbContext问题,因为数据库访问发生在正常的Controller操作中,与所有其他Controller访问数据库序列化.但我仍然遇到可能有多个计时器运行的问题,因此我需要在Controller操作中使用一些智能来忽略冗余报告请求.
有什么建议?这种事情通常怎么做?
asp.net-mvc ×4
nuget ×2
asp.net ×1
asp.net-core ×1
azure ×1
c# ×1
elmah ×1
jquery ×1
localdb ×1
razor-pages ×1
sql-server ×1