我有2个ASP.NET MVC 3应用程序.我通过web.config使用模拟,以允许我查询Active Directory以获取用户的详细信息.该应用程序使用Windows身份验证,不允许匿名用户.一个应用程序是用户执行其任务的主要应用程序.另一个允许用户在应用程序1中设置其他用户的外观.
测试用户收到以下错误:
SQL1092N "<DOMAIN ID>" does not have the authority to perform the requested command.
Run Code Online (Sandbox Code Playgroud)
在我从主应用程序向辅助应用程序发送Web请求后,会发生这种情况.为了实现这一点,我必须让请求冒充实际用户而不是模拟应用程序用于模拟的身份.这实际上是我发布并回答的问题.就在这里:如何通过WebRequest调用MVC Action并通过Active Directory验证请求?
在该代码的最后,我打电话给:
impersonationContext.Undo();
Run Code Online (Sandbox Code Playgroud)
在发生此Web请求之后,主应用程序尝试访问数据库,现在似乎上述调用已撤消模拟应用程序,因此用户尝试执行任何打开数据库连接的操作失败.至少,经过一天的抨击之后,这是我的工作理论.
我的问题是,如何模拟应用程序以恢复web.config中的用户?或者,在发出我的Web请求时,是否有办法确保模拟上下文仅适用于该请求?
所有这一切的重点是第二个应用程序有自己的sql server数据库.主应用程序使用DB2.我想编写一次数据库访问代码,但在两个应用程序中都使用它.目前这就是我所做的,但我依靠Web请求获取数据的方法可能不是最好的方法.
我愿意接受任何想法,评论,建议和/或批评.我该怎么办呢?
我最近刚开始使用Entity Framework 1.0,并相信我开始感受到每个人都在谈论的痛苦.我正在尝试使用最佳实践,因此我有一组DTO通过AutoMapper映射到我的实体和从我的实体映射.
真正的问题是当我试图更新一个对象时.第一个问题是我找不到创建新实体的方法,从我的DTO传输数据,并且仍然让实体ObjectContext意识到它已被更改.我使用了以下代码:
public VideoDTO UpdateVideo(VideoDTO pVideo)
{
Video video = new Video();
Mapper.Map(pVideo, video);
context.Attach(video); //Successfully attaches
context.ApplyPropertyChanges("Videos", video); // no changes made as far as entity knows b/c it was attached in it's updated state
context.SaveChanges(); //doesn't save the entity
return pVideo;
}
Run Code Online (Sandbox Code Playgroud)
然后我想,也许我需要先从数据库中获取实体,附加到上下文,在Mapper上调用Map方法,然后调用SaveChanges.我在这做了什么:
public VideoDTO UpdateVideo(VideoDTO pVideo)
{
Video video = context.Videos.Where(v => v.VideoId == pVideo.VideoId).FirstOrDefault();
Mapper.Map(pVideo, video); //Error here: Can't change VideoId value on Video entity
//context.Attach(video);
//context.ApplyPropertyChanges("Videos", video);
context.SaveChanges();
return pVideo;
}
Run Code Online (Sandbox Code Playgroud)
现在我们得到了不允许更改属性VideoId的可爱EF问题,因为它被Video实体上的EntityKey属性使用.可爱.我已经设置了映射,以便当我从我的DTO映射到EF实体时,EntityKey属性将获得一个值.现在我需要一种方法来对该映射规则进行例外处理,但不知道从哪里开始.我想我可以在这个方法中创建一个全新的映射规则,并将EntityKey和VideoId属性设置为忽略,但这看起来非常草率.此外,我不确定此时创建的映射是否会成功.如果它覆盖允许DTO将值映射到实体上的EntityKey的初始设置,那将以完全不同的方式适得其反.
谁有更好的主意?
我正在采取我的第一次认真尝试与Json合作并将其从一个应用程序返回到另一个应用程序.
我的应用程序是使用.Net 4.0 Framework的ASP.NET MVC 3应用程序.
我需要将一个非常简单的类序列化和反序列化为json.
public class ProxyRequestResultDetails
{
public string ApplicationName { get; set; }
public string ProxyValue { get; set; }
public bool ProxyRelationshipExists { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
该类不继承或实现任何东西.
我可以通过执行以下操作将其成功转换为json:
string json = JsonConvert.SerializeObject(requestDetails);
Run Code Online (Sandbox Code Playgroud)
创建的json的一个示例是:
"{\"ApplicationName\":\"Awesome App\",\"ProxyValue\":\"0\",\"ProxyRelationshipExists\":true}"
Run Code Online (Sandbox Code Playgroud)
然后我拨打以下电话:
ProxyRequestResultDetails deserializedTestRequestDetails =
JsonConvert.DeserializeObject<ProxyRequestResultDetails>(json);
Run Code Online (Sandbox Code Playgroud)
这有一个如下所示的堆栈跟踪.它被格式化为包含所有内部异常的赌注.
Method: CustomHandleErrorAttribute
Message: Error converting value "{\"ApplicationName\":\"Awesome App\",\"ProxyValue\":\"0\",\"ProxyRelationshipExists\":true}" to type 'ProxySetup.Models.ProxyRequestResultDetails'. Path '', line 1, position 98. Inner Error #1: Could not cast or convert from System.String to ProxySetup.Models.ProxyRequestResultDetails.
stack trace: at …Run Code Online (Sandbox Code Playgroud) 我正在努力打印出用户可以点击 Vue.js 中寻呼机组件的页码。我看到文档明确指出 v-for 可用于范围:
v-for 也可以取整数。在这种情况下,它将重复该模板多次。
<div> <span v-for="n in 10">{{ n }} </span> </div>结果:
1 2 3 4 5 6 7 8 9 10
根据https://v2.vuejs.org/v2/guide/list.html#v-for-with-a-Range
无论如何我还没有找到指定 n 的起始值。似乎是从 1 开始,以 1 递增,直到 10。
有没有办法从 5 开始?
看起来我几乎需要创建一个方法或计算属性,它将返回一个包含我想要迭代的精确值的数组,以代替静态 10。
还有其他想法吗?
这很奇怪。可能还有其他问题,但这是交易。我正在制作一个应用程序,它只是收集信息并重定向到一个 URL,并将信息作为 URL 上的参数传递。我使用的是 ASP.NET MVC 3 (.NET 4.0) 框架,我以前从未重定向到应用程序外部的 URL。
我最初的尝试,我做了:
return RedirectPermanent("http://www.google.com?" + qrystring);
Run Code Online (Sandbox Code Playgroud)
这重定向到谷歌,但我没有看到参数。我做了一点工作并将 URL 更改为应用程序内的 URL,但我仍将使用完整 URL 而不是路由,因为我想确保值到达那里。现在,当我在本地调试应用程序并将鼠标悬停在我的断点上时,它说:
“当前不会命中断点。没有为此文档加载符号。”
此外,无论我在调用“RedirectPermanent”时将 URL 更改为什么,它始终会加载 Google 页面。
我已经清除了 Internet 临时文件历史记录并确保 ASPNET 用户可以访问该文件夹。我也关闭并重新打开了解决方案。我也尝试将“RedirectPermanent”更改为“Redirect”,但这并没有解决。在第一次点击 RedirectPermanent 语句之前,断点在这个应用程序中运行良好。
仅供参考:我正在运行 Windows XP 并使用 IIS Express(ASP.NET 开发服务器)。我还在本地以调试模式运行应用程序,而不是在服务器机器上运行。想法?
c# ×4
asp.net-mvc ×3
asp.net ×1
automapper ×1
javascript ×1
json ×1
json.net ×1
redirect ×1
v-for ×1
vue.js ×1