小编Ben*_*ndt的帖子

IIS 7.5中的Windows身份验证失败

我正在为我的公司构建一个简单的内部应用程序,它需要Windows身份验证才能实现安全性.禁用所有其他身份验证模式.我陷入了这样的情况,即Internet Explorer会提示输入凭据3次,然后失败并出现此错误:

未经授权

HTTP错误401.请求的资源需要用户身份验证.

然后我创建了一个简单的网站来测试它.我在IIS中创建了一个新站点,将其放在自己的端口(:8111,随机选择),在其中放置一个静态"default.htm"文件,禁用匿名身份验证,然后启用Windows身份验证.其他所有内容都保留默认设置.分配端口号是因为我们在此计算机上有多个站点共享相同的IP.

以下是一些场景:

  • 从Web服务器本身浏览到http:// localhost:8111 /工作正常

  • 从另一台计算机浏览到http:// ServerIPaddress:8111 /工作正常

  • 从另一台计算机浏览到http:// ServerName:8111/FAILS(请求凭据3次,然后给出401错误)

我一直在网上搜索并试图找到一个没有运气的解决方案.要么我没有找到它,要么我不太清楚我在读什么.任何帮助将不胜感激.

iis-7 windows-authentication windows-server-2008

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

批处理文件输入验证 - 确保用户输入了整数

我正在尝试使用Windows批处理文件来执行一个简单的操作,该操作要求用户输入一个非负整数.我正在使用简单的批处理文件技术来获取用户输入:

@ECHO OFF
SET /P UserInput=Please Enter a Number: 
Run Code Online (Sandbox Code Playgroud)

用户可以在此处输入他们想要的任何文本,因此我想添加一些例程以确保用户输入的是有效数字.那就是......他们输入了至少一个字符,每个字符都是0到9之间的数字.我想要一些可以将UserInput输入的字符.例程结束时就像if/then那样根据它是否实际上是一个有效的数字来运行不同的语句.

我已经尝试过循环和子串等等,但我的知识和理解仍然很渺茫......所以任何帮助都会受到赞赏.

我可以构建一个可执行文件,我知道有更好的方法来处理批处理文件,但至少对于这个任务,我试图通过使用批处理文件来保持简单.

windows validation scripting cmd batch-file

13
推荐指数
4
解决办法
9万
查看次数

重写System.Diagnostics.Trace.WriteLine以记录到文件

这可能更像是一个OOP概念问题,但这就是我想要做的.

我有一个应用程序,使用System.Diagnostics.Trace.WriteLine输出调试信息,以便可以使用DebugView查看它.

我想重写/扩展(不知道正确的术语)这个方法来记录文本文件代替,也许除了跟踪输出.这将允许我为我的应用程序编写一个新的WriteLine方法,并且我可以在应用程序的其余部分保持所有其他System.Diagnostics.Trace.WriteLine语句不变.

那么我将如何在VB.Net应用程序中更改此方法的行为?

vb.net oop logging trace diagnostics

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

WPF将My.Settings集合绑定到Combobox项目

我是WPF的新手,仍然试图在XAML中绕过绑定.

我想在my.settings中使用字符串集合的值填充组合框.我可以在这样的代码中做到这一点:

Me.ComboBox1.ItemsSource = My.Settings.MyCollectionOfStrings

......它有效.

我怎么能在我的XAML中做到这一点?可能吗?

谢谢

wpf binding

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

UWP应用程序中的Async Task.Delay开销是否有更好的解决方案?

前段时间我在Raspberry Pi 3上构建了一个应用程序.其中,它使用步进电机驱动板控制步进电机.为了让电机向"步进"移动,我必须将输出引脚设置为高电平和低电平.电压的变化会导致电机进入下一个位置.我需要在电压变化之间有一个小的时间延迟才能正常工作.

我最初的研究表明,在UWP应用程序中获得时间延迟的最佳实践方法是使用异步Task.Delay()方法.我无法访问UWP中的Thread.Sleep方法,所以我试了一下.此外,由于该方法采用整数作为参数,因此1毫秒是我可以使用的最短延迟.

这是我第一次尝试的例子,制作了1600个连续的"步骤":

for (int i = 0; i < 1600; i++)
{
    // (stepper driver board makes one step for every low-to-high transition)
    StepperStepPin.Write(GpioPinValue.Low);
    await Task.Delay(1); // wait 1 ms
    StepperStepPin.Write(GpioPinValue.High);
    await Task.Delay(1); // wait 1 ms
}
Run Code Online (Sandbox Code Playgroud)

理论上,在循环的每次迭代中延迟2ms,这应该花费大约3.2秒.实际上,它最终需要大约51秒.据我所知,调用此异步延迟方法的行为会增加大约15 ms的开销来启动异步线程.如果我只是偶尔使用更长的延迟,这将是不明显的.但是,当我不得不做成百次或数千次时,它会迅速增加.

经过多次挖掘,我发现了一个适合我的解决方案.我放弃了异步方法并使用System.Diagnostics.Stopwatch类进行同步方法,它也让我有亚毫秒延迟:

private readonly Stopwatch _sw = new System.Diagnostics.Stopwatch();

private void ShortDelay(double milliseconds) {
    _sw.Start();
    while ((_sw.Elapsed).TotalMilliseconds < milliseconds) { }
    _sw.Reset();
}

//////////////////////////////////////////

for (int i = 0; i < 1600; i++)
{ …
Run Code Online (Sandbox Code Playgroud)

c# async-await raspberry-pi windows-10-iot-core uwp

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

在ASP.NET MVC中保留非表单模型数据

我还是相对较新的ASP.NET MVC 3,对于那些在这里有更多经验的人,我有一个概念性的问题.

让我们说(简单)示例我有一个事件的注册表单.表单将显示事件的名称,以及用户可以输入其名称的文本框.ViewModel看起来像这样:

public class SignupFormViewModel {
   public string EventName { get; set; }
   [Required]
   public string VolunteerName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Razor视图可能如下所示:

<h2>Sign up for @Model.EventName</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<div class="editor-field">
    @Html.EditorFor( model => model.VolunteerName )
    @Html.ValidationMessageFor( model => model.VolunteerName  )
</div>
}
Run Code Online (Sandbox Code Playgroud)

如果用户将表单提交回服务器并且ModelState无效,我们将返回原始View并传回Model,以便我们显示错误.(我们假设这个例子是在客户端上没有处理的错误)

麻烦的是,在我上面显示的示例视图中,EventName未随表单数据一起提交.我只想将它用于页面内容,而不是表单字段.但是如果我必须返回并向用户显示验证错误,我就丢失了EventName属性.

那么我通过一个回到相同视图的帖子保留这个非表单字段项目的选项是什么?

我知道我可以创建一个隐藏字段来保存EventName属性,但是有一些东西对于被强制将每个非表单字段属性放入隐藏字段时没有异味.我也知道我可以在我的控制器中进入HttpPost动作,并在返回视图之前将该数据重新加载到模型中,但这也感觉很笨拙.

我想我对这方面的基本方法有很好的理解,但我想知道是否有更好的方法或最佳实践感觉更干净......或者如果我只是要学会处理它:-)

谢谢

asp.net-mvc asp.net-mvc-3

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

我应该在"关于"框中显示什么?

我已经在我的公司内部构建了一个小的.NET winforms实用程序,并且由于主要界面是一个选项卡控件,我决定为"about box"而不是单独的表单添加一个选项卡.所以,我有一些空间来填写我的盒子.

到目前为止,我有:

  • 该程序的图标和名称
  • 作者姓名(我)
  • 创作年份(2009年).

剩下相当多的空白空间,我想我可能会尝试添加一些有用的东西......但也许这是不必要的?这是我到目前为止添加的其他内容:

  • 操作系统版本
  • .NET Framework版本
  • 当前目录
  • 电脑名称
  • 用户名

我想如果有一些奇怪的行为,这可能是有用的.

你怎么看?您是否希望在about框中显示一些有用的信息,或者我应该保持简单明了吗?

.net diagnostics about-box

5
推荐指数
2
解决办法
487
查看次数

当我向控制器添加新依赖时,单元测试中断

在编写基于.net MVC的应用程序时,我一直在尝试将自己转变为更加测试驱动的方法.我正在使用基于构造函数的注入执行所有依赖注入.到目前为止它进展顺利,但我发现自己反复做了一些事情,我想知道那里是否有更好的做法.

假设我想测试一个控制器.它依赖于工作单元(数据库)对象.很简单......我编写我的控制器以在其构造函数中使用该接口,我的DI框架(Ninject)可以在运行时注入它.简单.同时在我的单元测试中,我可以使用模拟的数据库对象手动构建我的控制器.我喜欢我可以编写许多单独的自包含测试来处理所有对象构造和测试.

现在我继续前进并开始向Controller对象添加新功能和新功能.Controller现在有一个或两个以上的依赖项.我可以使用这3个依赖项编写更多的测试,但是我的旧测试都被破坏了(不会编译),因为编译器会抛出一大堆这样的错误:

'MyProject.Web.Api.Controllers.MyExampleController' does not contain a constructor that takes 3 arguments
Run Code Online (Sandbox Code Playgroud)

我一直在做什么(闻起来很糟糕)是返回并更新我的所有单元测试,更改构造代码,并为我的旧测试不关心的所有新依赖项添加null参数,如下所示:

由此:

var controllerToTest = new MyExampleController(mockUOW.Object);
Run Code Online (Sandbox Code Playgroud)

对此:

var controllerToTest = new MyExampleController(mockUOW.Object, null, null);
Run Code Online (Sandbox Code Playgroud)

这将获得编译的所有内容并让我的测试再次运行,但我不喜欢回去编辑大量旧测试以改变对我的对象构造函数的调用的前景.

有没有更好的方法来编写单元测试(或者更好的方法来编写类并执行DI?),因此当您添加新的依赖项时它们不会全部中断?

c# asp.net-mvc unit-testing

5
推荐指数
1
解决办法
438
查看次数

Automapper - 将字符串属性转换为SelectList?

我刚刚开始在MVC项目中学习AutoMapper.我有一个基本实体"Attendee",其中包含Gender字符串字段(可能的值为"M"或"F").

我已经在我的参加者和我的AttendeeEditView对象之间创建了一个基本映射.我想要做的是将模型侧的"M"或"F"性别字符串转换为ViewModel侧的SelectList,并在列表中选择适当的值.

我想我需要一个ValueResolver才能做到这一点......这就是我写的:

public class GenderMenuResolver : ValueResolver<Attendee, SelectList> {
    protected override SelectList ResolveCore( Attendee source ) {
        List<object> items = new List<object>(){
            new{ Value = "F" , Text = "Female" },
            new{ Value = "M" , Text = "Male" }
        };

        string Gender = source.Gender ?? "";
        string selectedValue = new List<string>() { "M", "F" }.Contains( Gender.ToUpper() ) ? Gender.ToUpper() : "";

        SelectList GenderMenu = new SelectList(
            items,
            "Value",
            "Text",
            selectedValue
        );

        return GenderMenu;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的映射代码:

Mapper.CreateMap<Attendee, AttendeeEditView>() …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc automapper

2
推荐指数
1
解决办法
1901
查看次数

Powershell Web Page Automation在Internet上运行,而不是在Intranet上运行

我正在尝试使用Powershell进行一些简单的自动化,从我们公司的一个本地Intranet页面中提取链接URL,然后使用这些URL进行一些工作.最后,我将使用该脚本打开每个链接,然后单击页面上的按钮.我在Windows 7 x64中使用Internet Explorer 9.

这是一个简单的工作PowerShell脚本示例,它显示页面上的所有链接:

$ie = new-object -com "InternetExplorer.Application"
$ie.Visible = $true
$ie.Navigate( "http://www.reddit.com" )
While ($ie.Busy) {
    Sleep 1
}

$links = $ie.Document.getElementsByTagName("a")
$links | foreach {
    write-host $_.href
}
Run Code Online (Sandbox Code Playgroud)

此脚本正常工作,直到我用本地Intranet站点替换URL.它遵循常规URL方案(http://internaldomain.com/etc),但它被识别为Intranet站点.一旦我试图在Intranet区域中刮取页面,$ ie.Document值突然变为NULL并且脚本失败.

我猜它与该区域的一些模糊设置有关......我不确定.我在网上找到了一些建议,比如将它添加到您信任的网站,但这没有用.这是我第一次将Powershell用于Web自动化,因此任何帮助或见解都将受到赞赏.

powershell automation internet-explorer-9

2
推荐指数
1
解决办法
4905
查看次数

数据绑定失败 - 帮助我开始使用简单的示例

好的......我是一个试图理解WPF及其所有功能的VB.NET WinForms人.我正在编写一个基本的应用程序作为学习经验,并且已经阅读了大量信息和观看教程视频,但我无法通过简单的DataBinding开始,我知道我缺少一些基本概念.尽管我喜欢它,但我没有那个"啊哈!" 审核源代码的时刻.

所以......在我的Window类中,我定义了一个自定义字符串Property.当我进入Blend时,我尝试将TextBox的文本数据绑定到此属性,但我的属性不会在Blend中显示为可用于绑定的内容.

有人可以告诉我我需要添加到我的代码/ XAML下面...最重要的原因是什么?

我的XAML:

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <TextBox Text="How do I Bind my SomeText property here?"></TextBox>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

我的窗口代码:

Class Window1 

    Private _sometext As String = "Hello World"

    Public Property SomeText() As String
        Get
            Return _sometext
        End Get
        Set(ByVal value As String)
            _sometext = value
        End Set
    End Property

End Class
Run Code Online (Sandbox Code Playgroud)

data-binding wpf

1
推荐指数
2
解决办法
638
查看次数