我正在开发一个MVC3应用程序,需要用户对AD进行身份验证.我知道MVC3中有一个选项可以创建一个Intranet应用程序,可以根据AD自动对用户进行身份验证,但它使用Windows身份验证并自动登录.可以在"开放"工作站上访问此应用程序,用户需要输入其域用户名和密码.任何示例或在线教程都会很棒.一个示例项目将是例外.
asp.net-mvc forms-authentication windows-authentication asp.net-mvc-3 asp.net-mvc-2
我有以下问题:
public Boolean Exists(String userName)
{
IRepository<User> = new UserRepository();
User user = userRepository.First(u => u.Name == userName);
if (user == null) return false;
// Exists!
return true;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,我无法检查User对象是否为null.在我到达那里之前,我得到InvalidOperationException一句话" 序列中没有元素 ".
这对我来说似乎很奇怪,特别是因为我不想用异常建立控制流(例如封装在try..catch中并在各个部分中返回true/false).
这里发生了什么?这是正常的还是我的存储库有问题(提示?!)
顺便说一句,这个代码工作完美,当存在我正在寻找的元素(用户检索等).它只在没有匹配时才起作用.
在一些解决方案中,我们有ASP.NET/WCF Web项目和测试项目.一些测试针对ASP.NET开发Web服务器使用http://localhost:port/....在VS2010中,当ASP.NET/WCF Web项目正在调试时,测试运行器可以运行测试,如果Web项目中有任何断点,调试器将中断执行.这似乎已在VS2012中被禁用/删除.
调试ASP.NET/WCF Web项目(通过按F5或通过附加进程启动)时,将禁用TEST-> Run和TEST-> Debug子菜单.在VS2010中,只有Test-> Debug子菜单被禁用,而Test-> Run子菜单仍然启用.我们使用这种方式轻松调试Web项目中的服务.有什么方法可以恢复或解决这个问题?
在ASP.NET开发服务器上运行时调试似乎不适用于VS2012,或者至少我无法使其工作.
string newName = "new name";
int[] numbers = new int[] { 1, 2, 3 };
var people = numbers.Select(n => new Person()
{
Name = n.ToString()
});
foreach (var person in people)
{
person.Name = newName;
}
Debug.WriteLine(people.First().Name == newName); // returns false
Run Code Online (Sandbox Code Playgroud)
我期望上面的行返回true.为什么我不能在foreach循环中设置迭代变量的属性?
在Visual Studio 2012中,使用发布配置文件和Web部署可以简化部署.然而,它仍然缺少一些东西,或者可能是我还不知道如何使用它.
PublishProfileName.pubxml我已经检查过源控件中而不是PublishProfileName.pubxml.user每个用户都是本地的?我至少可以保存用户名,但显然不希望将其签入.PublishProfileName.pubxml而是存储在PublishProfileName.pubxml.useras中LastUsedBuildConfiguration.编辑
适用于发布的命令行是
MSBuild.Exe MyProject.sln /p:Configuration=QA /p:DeployOnBuild=true;PublishProfile=PublishToQA;AllowUntrustedCertificate=true /p:authType=NTLM /p:UserName=
Run Code Online (Sandbox Code Playgroud)
在此我想省略/p:Configuration=QAif配置是否成为发布配置文件本身的一部分.
我在远程MSMQ中使用事务时收到错误"在指定的队列中找不到请求的消息".如果删除了事务或将队列移动到同一台机器,一切正常.队列在Windows 2008计算机上,客户端(如下所示)在Windows 7计算机上运行.
//Throws above error
using (MessageQueueTransaction mqTxn = new MessageQueueTransaction())
{
mqTxn.Begin();
Message message = messageQueue.ReceiveById(peekedMessage.Id, mqTxn);
mqTxn.Abort();
}
//Throws above error
using (TransactionScope txnScope = new TransactionScope())
{
Message message = messageQueue.ReceiveById(peekedMessage.Id, MessageQueueTransactionType.Automatic);
}
//Works fine
Message message = messageQueue.ReceiveById(peekedMessage.Id);
Run Code Online (Sandbox Code Playgroud)
PS peekedMessage是在这些调用之前偷看的消息.我已经验证了peekedMessage.Id与第一个队列项匹配.队列是事务性的.
我正在使用MOQ框架,我有以下单元测试,它失败,出现以下错误消息"对象引用未设置为对象的实例"在下面的代码行
viewCxt.View.Render(viewCxt, writer);
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我正确的方向,为什么这不通过测试?
[Test]
public void can_call_PopulateBankTransactionWorkQueueViewInTransactionMetaDataAjaxResponseObject()
{
var transactionMetaData = new TransactionMetaDataDTO() { TransactionId = "1", FileId = "1", LockboxNumber = "0402020", DepositDate = "04.26.2011", BatchId = "1" };
var request = new Mock<HttpRequestBase>();
request.Setup(r => r.HttpMethod).Returns("GET");
var mockHttpContext = new Mock<HttpContextBase>();
mockHttpContext.Setup(c => c.Request).Returns(request.Object);
var controllerContext = new ControllerContext(mockHttpContext.Object, new Mock<RouteData>().Object, new Mock<ControllerBase>().Object);
var checkWorkQueueController = new CheckWorkQueueController(
activeDirectorySecurityManager.Object, businessObjectAdapter, httpRequestObjectHelper.Object, invoiceRepos.Object, new HtmlHelpers());
checkWorkQueueController.ControllerContext = controllerContext;
Assert.DoesNotThrow(() => checkWorkQueueController.PopulateBatchTreeSelectorViewInTransactionMetaDataAjaxResponseObject(transactionMetaData));
}
internal void PopulateBatchTreeSelectorViewInTransactionMetaDataAjaxResponseObject(TransactionMetaDataDTO transactionMetaDataDTO)
{
var …Run Code Online (Sandbox Code Playgroud) 说我有这个文件:
cat > test.txt <<EOF
line one word
line two word
line three word
line one two word
EOF
Run Code Online (Sandbox Code Playgroud)
让我们说我想用'TWO'替换所有单词'two',在文件中就地内联 .test.txt
现在,我所做的通常是构建一个"预览"(-n不打印行,然后使用/p- 仅打印匹配的行):
$ sed -n 's/two/TWO/gp' test.txt
line TWO word
line one TWO word
Run Code Online (Sandbox Code Playgroud)
...然后我通常执行实际的就地替换(有-i和没有/p):
$ sed -i 's/two/TWO/g' test.txt
$ cat test.txt
line one word
line TWO word
line three word
line one TWO word
Run Code Online (Sandbox Code Playgroud)
有没有办法sed在一个文件中就地更改行,并从一个命令行打印更改的行到stdout?
其中一个查询(如下所示)需要90秒以上才能执行.它从一个相当大的表LogMessage返回~500行.如果ESCAPE N'~'从查询中删除它,它会在几秒钟内执行.同样,如果TOP (1000)删除它,它会在几秒钟内执行.查询计划Key Lookup (Clustered) PK_LogMessage, Index Scan (NonClustered) IX_LogMessage and Nested Loops (Inner Join)在第一种情况下显示.当从句ESCAPE N'~'或TOP (1000)移除查询计划的变化,以及Clustered Index Scan (Clustered) PK_LogMessage.虽然我们正在寻找添加更多索引(可能在ApplicationName上),但我们想了解当前的情况.
正在生成查询Entity Framework,以防您想知道为什么以这种方式编写.实际查询也更复杂,但这是表现出相同行为的最短版本.
查询:
SELECT TOP (1000)
[Project1].[MessageID] AS [MessageID],
[Project1].[TimeGenerated] AS [TimeGenerated],
[Project1].[SystemName] AS [SystemName],
[Project1].[ApplicationName] AS [ApplicationName]
FROM
(
SELECT
[Project1].[MessageID] AS [MessageID],
[Project1].[TimeGenerated] AS [TimeGenerated],
[Project1].[SystemName] AS [SystemName],
[Project1].[ApplicationName] AS [ApplicationName]
FROM
(
SELECT
[Extent1].[MessageID] AS [MessageID],
[Extent1].[TimeGenerated] AS [TimeGenerated],
[Extent1].[SystemName] AS [SystemName], …Run Code Online (Sandbox Code Playgroud) sql sql-server performance sql-server-2008-r2 sql-execution-plan
我正在尝试运行由参数/p:DeployOnBuild=True传递时由MSBuild生成的ProjectName.deply.cmd .其中一个参数"ComputerName"将被传递为https://WebServer01:8172/MSDeploy.axd?SiteName=MySiteName.我的命令行是
ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd?Site=MySiteName
-AllowUntrusted /U:DeployUserName /P:Password /A:Basic
Run Code Online (Sandbox Code Playgroud)
它回来了
Error: Unrecognized argument 'MySiteName'. All arguments must begin with "-".
Run Code Online (Sandbox Code Playgroud)
执行的实际命令是
"C:\Program Files\IIS\Microsoft Web Deploy V3\\msdeploy.exe"
-source:package='Y:\ProjectName.zip'
-dest:auto,computerName='https://WebServer01:8172/MSDeploy.axd?Site',userName='DeployUserName',password='Password',authtype='Basic',includeAcls='False'
-verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension
-disableLink:CertificateExtension
-setParamFile:"Y:\ProjectName.SetParameters.xml"
MySiteName
-AllowUntrusted
Run Code Online (Sandbox Code Playgroud)
请注意,/ M的参数https://WebServer01:8172/MSDeploy.axd?Site=MySiteName被拆分为两个参数,从而创建computerName='https://WebServer01:8172/MSDeploy.axd?Site'和附加参数MySiteName.
我已经完成运行带有引用参数的部署包在Visual Studio 2010 Service Pack 1中失败,但是只处理ArgMsDeployAdditionalFlags而不是参数,例如/M:ComputerName.
如果没有传递SiteName,我可以使用在服务器上具有管理员权限的用户进行部署,但是当使用标准IIS用户DeployUserName时,我得到401
ProjectName.deploy.cmd /Y /M:https://WebServer01:8172/MSDeploy.axd
-AllowUntrusted /U:DeployUserName /P:Password /A:Basic
Run Code Online (Sandbox Code Playgroud)
服务器返回401
Error Code: ERROR_USER_UNAUTHORIZED
More Information: Connected to the remote computer ("WebServer01") using …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×3
c# ×3
.net ×2
linq ×2
msbuild ×2
msdeploy ×2
asp.net ×1
deployment ×1
foreach ×1
moq ×1
msmq ×1
performance ×1
sed ×1
shell ×1
sql ×1
sql-server ×1
tfs2010 ×1
transactions ×1
unit-testing ×1