小编efd*_*dee的帖子

ASP.NET MVC:使用UrlHelper的单元测试控制器

我的一个控制器操作,一个在Ajax请求中被调用,正在向客户端返回一个URL,以便它可以进行重定向.我正在使用Url.RouteUrl(..)并且在我的单元测试期间由于Controller.Url参数未预先填充而失败.

我尝试了很多东西,其中包括尝试存根UrlHelper(失败),手动创建一个UrlHelper带有RequestContext存根HttpContextBase(在RouteCollection.GetUrlWithApplicationPath调用时失败)的存根.

我搜索了谷歌,但几乎没有发现这个问题.我Url.RouteUrl在Controller操作中使用了一些非常愚蠢的东西吗?有没有更简单的方法?

更糟糕的是,我希望能够在我的单元测试中测试返回的URL - 实际上我只是想知道它重定向到正确的路由,但是因为我正在返回一个URL而不是一个URL route,我想控制解析的URL(例如,通过使用stubbed RouteCollection) - 但我很乐意让我的测试通过开始.

asp.net-mvc unit-testing urlhelper

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

在控制器中生成令牌

我正在使用Owin和ASP.NET Identity来使用OAuth令牌来保护我的Web API方法.令牌子系统设置如下:

var oauthOptions = new OAuthAuthorizationServerOptions()
{
    TokenEndpointPath = new PathString("/Token"),
    Provider = new SimpleAuthorizationServerProvider(),
    AccessTokenFormat = new TicketDataFormat(app.CreateDataProtector(typeof(OAuthAuthorizationServerMiddleware).Namespace, "Access_Token", "v1")),
    RefreshTokenFormat = new TicketDataFormat(app.CreateDataProtector(typeof(OAuthAuthorizationServerMiddleware).Namespace, "Refresh_Token", "v1")),
    AccessTokenProvider = new AuthenticationTokenProvider(),
    RefreshTokenProvider = new AuthenticationTokenProvider(),
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
    AllowInsecureHttp = true
};

app.UseOAuthAuthorizationServer(oauthOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
Run Code Online (Sandbox Code Playgroud)

它适用于基于用户名/密码请求令牌然后使用这些令牌.但是,由于用户在访问呈现SPA的控制器时已经过身份验证,我想在我的视图中生成令牌并将其传递给Javascript代码,而不必再次在SPA中登录.

所以我的问题是:如何手动生成令牌,以便将其包含在SPA视图中?

c# asp.net-web-api asp.net-identity

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

NHibernate没有持久的多对多关系

我目前正在使用NHibernate作为我的数据访问层,使用Fluent NHibernate为我创建映射文件.我有两个类,TripItem和TripItemAttributeValue,它们之间有多对多的关系.

映射如下:

public class TripItemMap : ClassMap<TripItem2>
{
    public TripItemMap()
    {
        WithTable("TripItemsInt");
        NotLazyLoaded();

        Id(x => x.ID).GeneratedBy.Identity().WithUnsavedValue(0);
        Map(x => x.CreateDate, "CreatedOn").CanNotBeNull();
        Map(x => x.ModifyDate, "LastModified").CanNotBeNull();

        /* snip */

        HasManyToMany<TripItemAttributeValue>(x => x.Attributes).AsBag()
            .WithTableName("TripItems_TripItemAttributeValues_Link")
            .WithParentKeyColumn("TripItemId")
            .WithChildKeyColumn("TripItemAttributeValueId")
            .LazyLoad();
    }
}

public class TripItemAttributeValueMap : ClassMap<TripItemAttributeValue>
{
    public TripItemAttributeValueMap()
    {
        WithTable("TripItemAttributeValues");

        Id(x => x.Id).GeneratedBy.Identity();
        Map(x => x.Name).CanNotBeNull();

        HasManyToMany<TripItem2>(x => x.TripItems).AsBag()
            .WithTableName("TripItems_TripItemAttributeValues_Link")
            .WithParentKeyColumn("TripItemAttributeValueId")
            .WithChildKeyColumn("TripItemId")
            .LazyLoad();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中的某个时刻,我从数据库中获取现有属性,将它们添加到tripItem.Attributes,然后保存tripItem对象.最后,TripItems_TripItemAttributeValues_Link永远不会获得任何新记录,从而导致关系不被持久化.

如果有帮助,这些是Fluent NHibernate为这些类生成的映射文件:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="true" assembly="ETP.Core" namespace="ETP.Core.Domain">
  <class name="TripItem2" table="TripItemsInt" xmlns="urn:nhibernate-mapping-2.2" lazy="false">
    <id name="ID" …
Run Code Online (Sandbox Code Playgroud)

.net nhibernate fluent-nhibernate

7
推荐指数
2
解决办法
7123
查看次数

查找TeamCity Agent在MSBuild脚本中使用的工作路径

我想将我的构建中的输出文件复制到登台服务器,但我无法弄清楚如何找到TeamCity用于在MSBuild中存储构建输出的路径.有帮助吗?

谢谢!

msbuild teamcity continuous-integration

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