小编jas*_*son的帖子

模拟,Active Directory和"用户无权访问xxxx"问题

我有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请求获取数据的方法可能不是最好的方法.

我愿意接受任何想法,评论,建议和/或批评.我该怎么办呢?

c# asp.net asp.net-mvc impersonation asp.net-mvc-3

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

实体框架,AutoMapper,处理实体更新

我最近刚开始使用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的初始设置,那将以完全不同的方式适得其反.

谁有更好的主意?

c# asp.net-mvc entity-framework automapper

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

json.net在序列化和反序列化一个非常简单的类时抛出错误

我正在采取我的第一次认真尝试与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)

c# serialization json json.net deserialization

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

在 Vue.js v2.x 中使用 v-for 指令时,如何指定范围的起始值?

我正在努力打印出用户可以点击 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。

还有其他想法吗?

javascript vue.js v-for

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

RedirectPermanent 在 ASP.NET MVC 3 应用程序中导致奇怪的结果

这很奇怪。可能还有其他问题,但这是交易。我正在制作一个应用程序,它只是收集信息并重定向到一个 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# asp.net-mvc redirect asp.net-mvc-3

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