简单来说
当我尝试浏览我的网站时,收到以下错误消息:
CS0016:无法写入输出文件'c:\ Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\www\xxx\yyy\zzz\abdll' - '目录名无效'
详细地
我的开发PC上有两个网站(虚构名称):
最近,我几乎经常在Web4上使用VS2012,它工作正常,但是前几天我试图运行Web2并得到上面显示的异常.
奇怪的是,路径的一部分(我上面用字母"zzz"替换)似乎指向德语路径,因为它是"\ de-DE" - 我不是用德语操作,所以我不知道从哪里得到这个想法.
有一件事几乎肯定是无关紧要的,但由于某些未知的原因,我觉得重要的是提到:我在Visual Studio 2012中使用性能分析工具在此问题首次出现的前一天,我不知道这是否可能有对我的电脑做了一些改动......?
尝试修复
互联网上有很多相关的话题; 一些线程成功结束,其中文件访问权限已被更改,而其他线程完成了一些有点绝望的声音...我已经完成了将我的PC上所有相关声音目录的NTFS权限与其同事的NTFS权限进行比较的过程.机器这仍然有效.不幸的是,在那里没有快乐.
我还卸载了asp.net 2.0并使用以下命令重新安装:
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -u
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -ir
Run Code Online (Sandbox Code Playgroud)
再一次,在那里也没有快乐.
我的Web4继续不受影响.
另外,仅供参考:在Win7 x64上使用IIS 7.5.
我现在转向更广泛的观众,希望将我目前的绝望状态转变为成功之一.
感谢大家
格里夫
我一直在关注Stephen Cleary在MSDN杂志(异步MVVM应用程序模式)中的一系列相当优秀的文章,并一直IAsyncCommand在"hello world"风格的应用程序中使用他的模式.
但是,他没有解决的一个领域是当需要传入命令参数时(使用此模式).对于一个简单的示例,请考虑身份验证,其中出于安全原因,密码控件可能不受数据限制.
我想知道是否有人设法让他的AsyncCommand参与工作,如果是这样,他们会分享他们的发现吗?
2020 年 2 月 20 日更新
概括
Azure DevOps 管道构建无法从我们在 Artifacts 下的私有源中找到 NuGet 包。
我们的 Azure DevOps 环境
在 Azure 中,我们有我们的公司“空间”:dev.azure.com/OurCompany
在此之下,我们有多个项目,例如,想象一下这三个:
红色的
RED 保存了我们所有常见的帮助程序代码,这些代码都是 GREEN 和 BLUE 应用程序使用的 DLL。这些以 NuGet 包的形式提供。
在 RED 的 Artifacts 下,我们看到了一个名为“OurCompany”的“组织范围提要”。我们知道我们不能使用它,因为这些 NuGet 包需要对 OurCompany 中的每个人可用,这意味着不仅在 Azure 上,而且在我们公司网络(我们运行 Visual Studio 的地方)中的桌面计算机上。我认为“组织范围内的提要”不会暴露给我们的企业网络。
因此,我们在 RED 的 Artifacts 下创建了一个新的 Feed。当我查看权限时,我看到以下条目:
公司的
因此,回到 Corporate,我们将 NuGet 包源添加到我们的 Visual Studio,然后它可以从 Azure 中提取 NuGet 包。
绿色和蓝色
在这里,我们有我们的产品。我们创建了一个构建管道,并添加了一个 NuGet …
nuget-package-restore devops azure-devops azure-pipelines azure-artifacts
我们有一个n层Web应用程序,可以从SQL Server中提取数据.我们的数据访问逻辑返回一个SqlDataReader,其数据随后用于创建我们的Business对象(也称为数据传输对象).
我们希望构建单元测试以检查我们的代码,这些代码解释这些SqlDataReader对象返回的数据以构建我们的Business对象.
因此,在单元测试期间,似乎需要构建存根来替换SqlDataReader对象.可能相当典型,我们的SqlDataReader对象通常返回多个记录集,每个记录集都有多行.
提前谢谢了
格里夫
在网页中,我们提供了用户可以点击进行身份验证的超链接(GET):
@Html.ActionLink("Please Login", "MyMethod", "MyController")
Run Code Online (Sandbox Code Playgroud)
这将映射到以下返回视图的控制器方法:
[RequireHttps]
public ActionResult MyMethod()
{
return this.View(new MyModel());
}
Run Code Online (Sandbox Code Playgroud)
此视图包含用户提供凭据的表单; 表单包含所需的AntiForgeryToken.
当用户提交表单时,将调用以下Controller方法:
[HttpPost]
[RequireHttps]
[ValidateAntiForgeryToken]
public ActionResult MyMethod(MyModel model)
{
// my logic
}
Run Code Online (Sandbox Code Playgroud)
这很好用,大部分时间......
但是,如果用户将浏览器打开一段"重要"时间,然后快速连续执行以下步骤:
他们得到一个例外,通知他们防伪令牌未提供或无效.
我不明白为什么会这样:View(包含表单)是在浏览器处于休眠状态之后创建的,因此防伪标记应该都是"新鲜的".但是,这个设计显然有问题,但我不确定如何最好地纠正它.
如果您有任何建议,请提前致谢.
格里夫
我有一个 Blazor(服务器)应用程序,它运行得非常好,并且遵守Microsoft.CodeAnalysis.FxCopAnalyzers和设置的所有规则StyleCop.Analyzers。
一个大幅削减的剃刀页面如下:
@inherits OwningComponentBase<MyService>
@inject IModalService ModalService
@inject IJSRuntime JSRuntime
// UI code
@code
{
private readonly CancellationTokenSource TokenSource = new CancellationTokenSource();
ElementReference myElementReferenceName;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await this.myElementReferenceName.FocusAsync(this.JSRuntime);
}
protected override async Task OnInitializedAsync()
{
....
}
public void Dispose()
{
this.TokenSource.Cancel();
}
protected void ShowModalEdit(object someObject)
{
.....
Modal.Show<MyPage>("Edit", parameters);
}
}
Run Code Online (Sandbox Code Playgroud)
注意#1:我@inherits OwningComponentBase<MyService>根据Daniel Roth 的建议使用
注意#2:我正在使用Chris Sainty 的 Modal 组件组件
但是,当我尝试将所有代码从该@code {...} …
简单来说
我有一个Windows服务,并行执行多个作业作为异步任务.然而,当调用OnStop时,似乎这些都立即被终止而不是被允许以更加亲切的方式停止.
更详细
每个工作代表一次工作的迭代,因此完成工作后,工作需要再次运行.
为实现这一目标,我正在编写一个概念验证Windows服务:
当我运行服务时,我看到所有内容都按预期执行.但是,当我停止服务时,似乎一切都停止了.
好的 - 那这是怎么回事?
在服务中,我有一个取消令牌和一个TaskCompletion Source:
private static CancellationTokenSource _cancelSource = new CancellationTokenSource();
private TaskCompletionSource<bool> _jobCompletion = new TaskCompletionSource<bool>();
private Task<bool> AllJobsCompleted { get { return _finalItems.Task; } }
Run Code Online (Sandbox Code Playgroud)
这个想法是,当每个Job优雅地停止时,Task AllJobsCompleted将被标记为已完成.
OnStart只是开始运行这些作业:
protected override async void OnStart(string[] args)
{
_cancelSource = new CancellationTokenSource();
var jobsToRun = GetJobsToRun(); // details of jobs not relevant
Task.Run(() => this.RunJobs(jobsToRun, _cancelSource.Token).ConfigureAwait(false), _cancelSource.Token);
}
Run Code Online (Sandbox Code Playgroud)
Task RunJobs将以并行循环运行每个作业:
private async Task RunModules(IEnumerable<Jobs> jobs, CancellationToken cancellationToken)
{
var parallelOptions = …Run Code Online (Sandbox Code Playgroud) c# parallel-processing windows-services task-parallel-library async-await
尝试使用 Blazor(服务器,如果这有什么不同的话),我很难绑定到 MultiSelectList 以工作......
一点背景:我正在处理 EF Core 并且有一个多对多的关系,比如说人和汽车之间的关系。我目前正在加载一个显示现有详细信息的页面,并允许用户更新此页面。
所以在我的服务中,我从数据库加载了我的 Person 实体,这包括他们当前拥有的所有汽车的详细信息。我还加载了所有可用汽车的列表。然后,我的 Service 方法创建一个 MultiSelectList 并将其添加到我的 ViewModel(将返回到 Razor 页面):
服务方式
vm.CarSelector = new MultiSelectList(
allCars,
nameof(Car.CarId),
nameof(Car.Name),
person.OwnedCars.Select(oc => oc.CarId));
Run Code Online (Sandbox Code Playgroud)
这是虚构的代码,但我希望你能得到图片。在调试这个时(在 Service 方法中),我可以看到这个 MultiSelectList 为每辆车都有一个条目,已经选择的条目显示为 Selected。伟大的!
Blazor 剃刀页
所以,这就是我解脱的地方......我不知道如何将 Razor 控件的双向数据绑定到这个对象。
我有一个解决 .NET Core 3.1 预览版 2 的现有 Blazor(服务器)应用程序。
我需要追溯添加本地 ADFS(不是 Azure)安全性。我一直在尝试在 ASP.NET Core 中使用 WS-Federation关注 Microsoft 的Authenticate users,但它顽固地忽略了安全性。这篇文章当然是为 ASP.NET 而写的,而不是 Blazor...
到目前为止我所做的是:
public static void ConfigureServices(IServiceCollection services)
{
services.AddIdentity<IdentityUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddAuthentication()
.AddWsFederation(options =>
{
options.MetadataAddress = "https://adfs.Server.com/FederationMetadata/2007-06/FederationMetadata.xml";
options.Wtrealm = "https://localhost:44323/";
});
services.AddAuthorization();
services.AddRazorPages();
services.AddServerSideBlazor();
....
Run Code Online (Sandbox Code Playgroud)
值得关注的一件事- 数据库中的表当前支持早期的身份验证模式(成员资格?)(由我们正在重写的应用程序使用)。它有表 [AspNetRoles] [AspNetUserClaims] [AspNetUserLogins] [AspNetUserRoles] 和 [AspNetUsers]。这些会被覆盖吗?
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if …Run Code Online (Sandbox Code Playgroud) authentication authorization adfs asp.net-core blazor-server-side
我Git-2.34.0-64-bit.exe从Windows 版 Git安装了 Git ,并选择了大部分默认选项。安装表示它将使用“git-credential-manager-core”,这似乎是它的最新版本。
完成安装并重新启动后,当我导航到包含 GIT 存储库的目录并git status从 cmd 行键入时,它工作正常。
但当我输入时,git fetch它说:
git:
credential-manager不是 git 命令。最相似的命令是credential-manager-core
那么,为什么它不使用凭证管理器的核心版本,或者更确切地说,我需要做什么才能让它使用它?
谢谢
asp.net-mvc ×2
async-await ×2
blazor ×2
adfs ×1
asp.net ×1
asp.net-core ×1
asynchronous ×1
azure-devops ×1
c# ×1
code-behind ×1
csrf ×1
data-binding ×1
devops ×1
git ×1
iis ×1
multi-select ×1
mvvm ×1
nunit ×1
security ×1
stub ×1
unit-testing ×1
wpf ×1