小编ami*_*t_g的帖子

ASP.NET MVC - 针对Active Directory对用户进行身份验证,但需要输入用户名和密码

我正在开发一个MVC3应用程序,需要用户对AD进行身份验证.我知道MVC3中有一个选项可以创建一个Intranet应用程序,可以根据AD自动对用户进行身份验证,但它使用Windows身份验证并自动登录.可以在"开放"工作站上访问此应用程序,用户需要输入其域用户名和密码.任何示例或在线教程都会很棒.一个示例项目将是例外.

asp.net-mvc forms-authentication windows-authentication asp.net-mvc-3 asp.net-mvc-2

44
推荐指数
2
解决办法
4万
查看次数

Sequence不包含任何元素错误,但我想检查null

我有以下问题:

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).

这里发生了什么?这是正常的还是我的存储库有问题(提示?!)

顺便说一句,这个代码工作完美,当存在我正在寻找的元素(用户检索等).它只在没有匹配时才起作用.

c# linq asp.net-mvc

31
推荐指数
3
解决办法
4万
查看次数

如何在调试Web项目的同时运行测试?

在一些解决方案中,我们有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,或者至少我无法使其工作.

asp.net visual-studio visual-studio-2012

19
推荐指数
4
解决办法
7736
查看次数

为什么我不能在foreach循环中设置迭代变量的属性?

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循环中设置迭代变量的属性?

c# linq foreach

12
推荐指数
2
解决办法
2741
查看次数

如何配置发布配置文件以使用NTLM身份验证

在Visual Studio 2012中,使用发布配置文件和Web部署可以简化部署.然而,它仍然缺少一些东西,或者可能是我还不知道如何使用它.

  • 我更喜欢使用NTLM身份验证,而不在发布配置文件中存储用户名和密码(尤其是).如何才能做到这一点?如果我将用户名和密码留空,我会收到提示.有没有像手动修改.pubxml文件的方法?
  • 为什么用户名/密码存储在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配置是否成为发布配置文件本身的一部分.

msbuild msdeploy visual-studio-2012

8
推荐指数
1
解决办法
4269
查看次数

远程MSMQ,事务和ReceiveById失败 - "在指定的队列中找不到请求的消息"

我在远程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与第一个队列项匹配.队列是事务性的.

.net msmq transactions

7
推荐指数
1
解决办法
2252
查看次数

如何使用moq模拟ControllerContext?模拟ControllerContext时出错

我正在使用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)

.net c# asp.net-mvc unit-testing moq

7
推荐指数
1
解决办法
1949
查看次数

sed:同步替换,打印出更改的行?

说我有这个文件:

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?

shell sed

7
推荐指数
1
解决办法
7216
查看次数

使用TOP和ESCAPE更改查询计划和执行时间

其中一个查询(如下所示)需要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

6
推荐指数
1
解决办法
919
查看次数

如何在ProjectName.deploy.cmd中传递网站名称

我正在尝试运行由参数/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)

deployment msbuild msdeploy tfs2010

6
推荐指数
1
解决办法
2564
查看次数