小编Mas*_*rfu的帖子

为什么User(在User.Identity.Name中)在我的抽象基本控制器中为null?

我问了一个相关的问题但是搞砸了标题,没有人会理解它.由于我现在能够更准确地提出这个问题,我决定在一个新问题中重新制定它并关闭旧问题.对不起.

所以我想要做的是将数据(我的自定义用户的昵称存储在数据库中)传递给LoginUserControl.此登录通过Html.RenderPartial()从主页面呈现,因此我真正需要做的是确保每次调用时都出现ViewData ["UserNickname"].但我不想在每个控制器的每个动作中填充ViewData ["UserNickname"],所以我决定使用这种方法并创建一个抽象的基本控制器,它将为我完成工作,如下所示:

public abstract class ApplicationController : Controller
    {
        private IUserRepository _repUser;

        public ApplicationController()
        {
            _repUser = RepositoryFactory.getUserRepository();
            var loggedInUser = _repUser.FindById(User.Identity.Name); //Problem!
            ViewData["LoggedInUser"] = loggedInUser;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这样,无论我的推导控制器做什么,用户信息都已经存在.

到现在为止还挺好.现在出现问题:

我无法调用User.Identity.Name,因为User它已经为空.在我的所有派生控制器中都不是这种情况,因此这是抽象基本控制器特有的.

我在代码中的另一个地方通过FormsAuthentication设置User.Identity.Name,但我认为这不是问题 - afaik User.Identity.Name可以为null,但不是User本身.

在我看来HttpContext不可用(因为也是null ;-)而且我在这里错过了一个简单而重要的观点.任何人都可以给我一些提示吗?我真的很感激.

c# asp.net-mvc user-controls controller httpcontext

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

如何保持WPF元素在背景图像上的相对位置

我是 WPF 的新手,所以以下问题的答案可能很明显,但对我来说不是。我需要显示一个图像,用户可以在其中设置标记(例如:您可能想用矩形在照片上标记一个人的脸),但是在缩放图像时标记需要保持它们的相对位置。

目前我通过使用 aCanvas并将a设置ImageBrush为背景来做到这一点。这将显示图像,我可以Label在图像顶部添加诸如 a (作为矩形的替代品)之类的元素。但是当我设置这样的标签时,它的位置是绝对的,所以当底层图片被缩放时(因为用户将窗口拖得更大)Label,它会保持在它的绝对位置(比如 100,100)而不是移动到新位置它与底层图像“同步”。

简而言之:当我在一个人的眼睛上设置一个标记时,缩放窗口后它不应该在这个人的耳朵上。

关于如何在 WPF 中做到这一点的任何建议?也许首先Canvas是错误的方法?我可以在代码中保留一组标记,并在每次调整窗口大小时重新计算它们的位置,但我希望有一种方法可以让 WPF 为我完成这项工作:-)

我很想听听您对此的意见。谢谢

wpf layout

7
推荐指数
3
解决办法
9998
查看次数

ASP.NET控制器基类User.Identity.Name

如在描述的这篇文章中,我创建一个抽象基类控制器,以便能够从控制器的数据传递到master.page.在这种情况下,我想在我的数据库中查找用户,查询User.Identity.Name(仅当他登录时).

但是,我注意到在这个抽象基类中,User属性总是如此null.要做到这一点,我该怎么办?

非常感谢

c# asp.net-mvc abstract-class controller master-pages

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

身份验证后重定向到http(应为https)

此处的起点是Microsoft的ASP.NET Core标准模板:我使用了Visual Studio => New Project => .NET Core=> ASP.NET Core Web应用程序

然后,我勾选了HTTPS支持框,并Work or School account针对现有的Azure AD实例配置了身份验证。

然后,无论我使用http还是https在本地运行它,身份验证过程中的重定向URL始终都指向https-完全正确。

当我将其部署到常规的Azure App Service中时,它具有相同的行为,这很好。

但是:如果我以此创建一个docker映像并将其部署到具有容器支持的Azure AppService(在本例中为基于Linux),则身份验证重定向将始终针对http,这实际上不是我想要的。

作为参考,这是用于构建映像的Dockerfile:

FROM microsoft/dotnet:2.1-sdk AS build

WORKDIR /src
COPY HttpsTest/HttpsTest.csproj HttpsTest/

RUN dotnet restore HttpsTest/HttpsTest.csproj
COPY . .
WORKDIR /src/HttpsTest
RUN dotnet build HttpsTest.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish HttpsTest.csproj -c Release -o /app

FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", …
Run Code Online (Sandbox Code Playgroud)

azure docker azure-active-directory azure-web-app-service

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

如何从VB6访问SQL CE 3.5

我们有一个用C#编写的.NET 3.5 SP1应用程序,它将数据存储在SQL CE 3.5数据库中.我们还需要从传统的VB6应用程序访问(只读)这些数据.

我不知道这是否可能.我能想到有几种解决这个问题的方法.

1)我已阅读有关ADOCE Con​​nections的信息,但这似乎只是嵌入式Visual Basic的一个选项

2)我似乎无法使用ADODB.Connection对象进行连接工作

Dim MyConnObj As New ADODB.Connection
' Microsoft.SQLSERVER.CE.OLEDB.3.5
' Microsoft.SQLSERVER.MOBILE.OLEDB.3.0
MyConnObj.ConnectionString = "Provider=SQLOLEDB;Data Source=c:\test.sdf"
MyConnObj.Open
Run Code Online (Sandbox Code Playgroud)

也许这只是提供商的糟糕选择?我还尝试了上面显示为注释的提供程序和不同的连接字符串,但无济于事.这两个提供程序都没有安装在我的开发计算机上,也不会安装在我客户的计算机上.

3)也许有一种方法可以使用像ODBC这样更通用的方法?但我相信这会导致设置/部署工作,对吧?

有没有人有这种情况的经验?如你所见,我真的在寻找一些好的起点.我也接受这样的答案,"只要它们带有一些指导方向,这就是简单的死亡,你也是如此";-)

c# vb6 legacy sql-server-ce

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