我问了一个相关的问题但是搞砸了标题,没有人会理解它.由于我现在能够更准确地提出这个问题,我决定在一个新问题中重新制定它并关闭旧问题.对不起.
所以我想要做的是将数据(我的自定义用户的昵称存储在数据库中)传递给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 ;-)而且我在这里错过了一个简单而重要的观点.任何人都可以给我一些提示吗?我真的很感激.
我是 WPF 的新手,所以以下问题的答案可能很明显,但对我来说不是。我需要显示一个图像,用户可以在其中设置标记(例如:您可能想用矩形在照片上标记一个人的脸),但是在缩放图像时标记需要保持它们的相对位置。
目前我通过使用 aCanvas并将a设置ImageBrush为背景来做到这一点。这将显示图像,我可以Label在图像顶部添加诸如 a (作为矩形的替代品)之类的元素。但是当我设置这样的标签时,它的位置是绝对的,所以当底层图片被缩放时(因为用户将窗口拖得更大)Label,它会保持在它的绝对位置(比如 100,100)而不是移动到新位置它与底层图像“同步”。
简而言之:当我在一个人的眼睛上设置一个标记时,缩放窗口后它不应该在这个人的耳朵上。
关于如何在 WPF 中做到这一点的任何建议?也许首先Canvas是错误的方法?我可以在代码中保留一组标记,并在每次调整窗口大小时重新计算它们的位置,但我希望有一种方法可以让 WPF 为我完成这项工作:-)
我很想听听您对此的意见。谢谢
如在描述的这篇文章中,我创建一个抽象基类控制器,以便能够从控制器的数据传递到master.page.在这种情况下,我想在我的数据库中查找用户,查询User.Identity.Name(仅当他登录时).
但是,我注意到在这个抽象基类中,User属性总是如此null.要做到这一点,我该怎么办?
非常感谢
此处的起点是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) 我们有一个用C#编写的.NET 3.5 SP1应用程序,它将数据存储在SQL CE 3.5数据库中.我们还需要从传统的VB6应用程序访问(只读)这些数据.
我不知道这是否可能.我能想到有几种解决这个问题的方法.
1)我已阅读有关ADOCE Connections的信息,但这似乎只是嵌入式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# ×3
asp.net-mvc ×2
controller ×2
azure ×1
docker ×1
httpcontext ×1
layout ×1
legacy ×1
master-pages ×1
vb6 ×1
wpf ×1