使用Azure AD时,将用户重定向到自定义登录页面

我正在使用以下代码示例将Azure AD登录插入我的应用程序( https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet )。 我发现代码工作得很好,但是如果用户还没有登录或者他们的会话已经过期,我希望能够将用户重定向到自定义登录页面。 然而,我正在努力让这个工作,并想知道这是否确实可行? 是否按设计将用户始终重定向到Azure AD的Microsoft登录页面而不是您自己的自定义页面,或者是否有我错过的设置? 我修改了FilterConfig.cs提供的代码以启用Authorizefilter属性: filters.Add(new AuthorizeAttribute()); 我还在web.config添加了以下内容,但没有效果: 在Startup.Auth.cs文件中,我看不到app.UseOpenIdConnectAuthentication可以进行的任何更改,以允许我设置通用登录页面,因为我可能使用基于cookie的身份validation。

当使用iis express时,没有在远程PC上应用css

我想在开发过程中从远程PC上使用我的asp.net mvc站点。 因此,我将其配置为使用IIS Express。 首先,Windows身份validation引发了一个问题。 我的网站应该在Windows域内网中工作,所以我想使用集成的Windows身份validation。 我设法使用如何:Firefox和 IIS Express Windows身份validation中的 集成Windows身份 validation (由bees73回答)使其在Firefox上运行。 但IExplorer仍然要求打印登录名/密码,即使我在本地打开它,指定我的ip而不是localhost。 IE的问题仍然没有得到解决,但是如果我在我的凭据中打印,它确实在本地工作。 我的问题是:当我在远程PC上打开我的网站时(两者都在firefox中(无需打印登录/密码)和IE(我必须打印login’n’password))我的页面在不应用样式的情况下呈现。 看起来没有CSS可用。 但我没有任何错误。 在加载页面的源代码中,我确实有行 但是当我试图看到Site.css时,它说有一些内部服务器错误。 我想我没有正确配置IIS Express,这就是问题所在。 如果没关系,集成的Windows身份validation必须工作,而不是在IE上询问登录和密码,至少我猜。 所以,我的配置: 该项目本身 – 以IIS Express,Windows身份validation – 开启,匿名关闭。 netsh http add urlacl url = http:// myip:myport user = domainname \ mylogin netsh http add iplisten ipaddres = myip 在applicationhost.config中 : 绑定: validation: … […]

用C#编写的COM加载项与自动加载项的可选参数

我正在开发一个COM加载项和Excel自动化加载项库,其核心代码是用C#编写的。 我想为函数设置一个可选参数,我知道这对于C#和VBA,甚至Excel WorksheetFunction都是合法的。 但我发现最终可选参数专门用于COM和自动化加载项,这意味着如果首先运行一个加载项,那么效果很好,但另一个加载项的可选参数将不起作用。 下面请看示例: 在VS 2013解决方案中,我有两个项目:一个名为TestVBA ,另一个名为TestExcel 。 TestVBA用于COM加载项并通过“Excel 2013加载项”构建,并且有两个.cs文件: ThisAddIn.cs 此文件自动生成并稍作修改。 代码是 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Excel = Microsoft.Office.Interop.Excel; using Office = Microsoft.Office.Core; using Microsoft.Office.Tools.Excel; namespace TestVBA { public partial class ThisAddIn { private void ThisAddIn_Startup(object sender, System.EventArgs e) { } private void ThisAddIn_Shutdown(object sender, System.EventArgs […]

c #windows表单Tab顺序

我在C#项目中有一个窗口表单,用于保存学生信息。 我抓住了这张照片: 我想按顺序添加连续顺序的数据,但是当我向Surname文本框输入数据时,TAB按钮跳转到电子邮件文本框,然后跳转到电话号码文本框,最后跳转到出生日期DateTimePicker。 除了这些文本框之外,我在窗体上将所有控件的TabStop属性设置为“False”。 我通过属性部分安排了他们的TabOrder,如下所示0,1,2 ..如我所愿。 但是正如我上面写的那样顺序。 然后我通过菜单条上的“查看”打开了Tab Orderfunction..我点击了我想按顺序使用的所有控件,但没有用。 表单和Tab按钮与以前一样。 我抓住了Tab Orderfunction图片如下: 我现在该怎么办?

创建松散耦合/可扩展的软件架构

我已经研究了好几个星期了。 我目前正在使用n层(3层)方法和工厂设计方法设计松散耦合的架构设计。 我的目标是将每个客户端的业务逻辑(ClientA.DLL,ClientB.DLL)放在单独的命名空间中,以便项目扩展,这意味着我可以修改/删除/添加特定客户端的业务逻辑而不会影响其他客户端,因为它们是不依赖于彼此。 然后,我使用客户端的唯一标识符(在数据库中维护的字符串值)通过Factory命名空间调用客户端的名称空间/类。 Factory.DLL还隐藏了每个客户端的逻辑,而BusinessAbstract.DLL则用作每个客户端的类将使用的布局或模板。 这是项目解决方案: 这是实际的代码: BusinessAbstract.DLL namespace BusinessAbstract { // the entity / data transfer object public class MemberDTO { public string MemberID { get; set; } public string MemberName { get; set; } } // the interface public interface IMaintainable { void Add(); void Edit(); void Delete(); } // the base abstract […]

Windows Phone 8.1相机初始化 – 访问被拒绝的例外

使用适用于Windows Phone的8.1 ​​MediaCapture类。 宣布了“音频”和“网络摄像头”的function,其中90%是exception的原因。 Kicker是,它在WP模拟器中完美运行,但在实际设备上中断。 确切的例外是: 我已经添加了大量的检查,以确保我们没有重新初始化已经初始化的相机或尝试在初始化之前阅读等等(因为我认为问题是由引起的)所以它不太可能是那样的。 private async Task InitializeCameraAsync() { if (_isInitialized) { Debug.WriteLine(“Skipping unnecessary initialization”); return; } Debug.WriteLine(“Initializing camera media capture…”); _deviceCapture = new MediaCapture(); await _deviceCapture.InitializeAsync(new MediaCaptureInitializationSettings { VideoDeviceId = _cameraInfoCollection[_currentVideoDevice].Id, PhotoCaptureSource = PhotoCaptureSource.VideoPreview, AudioDeviceId = _microphoneInfoCollection[_currentAudioDevice].Id StreamingCaptureMode = StreamingCaptureMode.Video }); Debug.WriteLine(“Initialized camera media capture!”); // For code completion only, unlikely […]

如何避免在视图中循环?

当我构建我的视图时,我想尽可能多地消除处理逻辑。 理想情况下,我想坚持使用Razor只使用HTML和渲染值。 假设我有一个带有BarModel对象列表的FooModel: public class FooModel { public List Bars { get; set; } public string FoosFirstValue { get; set; } public string FoosOtherValue { get; set; } } public class BarModel { public string SomeValue { get; set; } public string SomeOtherValue { get; set; } } 在我看来,我需要遍历并显示我的Bars上的元素: @model MyApp.FooModel @Model.FoosFirstValue @Model.FoosOtherValue Bars: @foreach […]

从C#调用python代码(.py文件)

我有一些python代码执行某项任务。 我需要从C#调用此代码而不将python文件转换为.exe,因为整个应用程序都是基于C#构建的。 我怎样才能做到这一点?

不可预测的唯一标识符

对于我正在处理的应用程序,我需要生成一个必须具有以下属性的会话令牌: 至少应该是应用程序的独特之处,全球唯一性会更好 它应该是不可预测的 它不应该太长,因为它必须在http请求标头中传递,所以越小越好 我正在考虑使用加密随机数来调整Guid结构,但这可能是一种过度杀伤力。 有人知道/创建了一个适合所有这些属性的数据结构吗?

列出IP子网中的所有地址

我需要获取子网中包含的所有IP地址,我正在尝试使用IPnetwork 例如,子网192.168.1.0/29将具有以下输出: // Output // 192.168.1.0 // 192.168.1.1 // 192.168.1.2 // 192.168.1.3 // 192.168.1.4 // 192.168.1.5 // 192.168.1.6 // 192.168.1.7 这是我的代码: IPNetwork ipn = IPNetwork.Parse(“192.168.1.0/29”); IPAddressCollection ips = IPNetwork.ListIPAddress(ipn); foreach (IPAddress ip in ips) { Console.WriteLine(ip); } // Output // 192.168.1.0 // 192.168.1.0 // 192.168.1.0 // 192.168.1.0 // 192.168.1.0 // 192.168.1.0 如您所见,这不是理想的结果。 我错过了什么? 有没有其他工具或方法来完成这项工作? 我已经设法破解了一些东西,但它并不漂亮,我不确定它是否正确枚举更大的子网。