小编Dav*_*ans的帖子

访问WCF RequestInterceptor中的HttpContext

我正在使用WCF REST stater工具包来构建一个简单的xml over HTTP服务.作为这个Im的一部分,我使用RequestInterceptor进行身份验证.在RequestInterceptor内部,我可以访问System.ServiceModel.Channels.RequestContext对象,从中可以获取请求url,querystring params和其他有用的东西.我无法解决的是如何访问请求的HttpContext.我有几个东西存储在HttpContext中,我想在requestInterceptor中访问但是我很难找到它们.当我在Visual Studio中使用quickwatch时,我可以看到它隐藏在requestContext的私有成员中.有人可以告诉我如何访问HttpContext,也许使用RequestContext对象上的反射?

wcf httpcontext wcf-rest

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

更新包运行时约束包引用升级版本

在 .NET 的packages.configNuGet旧系统下,我可以通过使用allowedVersionsPackage 元素上的属性来限制更新包时考虑的包的可能版本

<package id="Newtonsoft.Json" version="10.0.3" allowedVersions="[10.0.3]" />
Run Code Online (Sandbox Code Playgroud)

update-package在Visual Studio中运行,包括上述项目,将发生没有更新Newtonsoft.Json,因为我已经使用固定到10.0.3allowedVersions属性。

我怎样才能做到这一点PackageReference?将semver语法应用于 Version 属性只会影响恢复的版本- 它不会限制更新。因此,如果我指定以下内容PackageReference并运行update-package,例如,如果 11.0.1 在我的 NuGet 存储库中,我将升级到 11.0.1。

<PackageReference Include="Newtonsoft.Json" Version="[10.0.3]" />
Run Code Online (Sandbox Code Playgroud)

背景

我们依靠命令行工具来更新包,因为我们有快速移动的内部包(一天更新多次)和更稳定的低移动包(例如:ASP.NET)。在大型代码库中,手动更新.csproj文件中的每个依赖项对我们来说根本无法扩展(并且容易出错)。在下面,packages.config我们可以“固定”我们不想升级的第三方软件包,也可以更新到最新的快速移动依赖项。

c# nuget nuget-update .net-standard packagereference

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

在 Web api IExceptionHandler 中获取请求正文

我正在尝试为 ASP.NET web api 编写一个全局错误处理程序,它能够记录在我的 api 中导致未处理异常的请求的请求详细信息。我已经在我的 OWIN 启动类中注册了以下 GlobalExceptionHandler 类,但我无法检索请求正文中发布的任何数据的内容。

public class GlobalExecptionHander : ExceptionHandler
{
    public override void Handle(ExceptionHandlerContext context)
    {
        var body = context.Request.Content.ReadAsStringAsync().Result;
        //body here is an empty string

        context.Result = new UnhandledErrorActionResult
        {
            Request = context.Request,
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的创业班

config.Services.Replace(typeof(IExceptionHandler), new GlobalExecptionHander());
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-web-api owin asp.net-web-api2

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

NHibernate SchemaExport有时无法删除表....

我正在将NHibernate用于我的应用程序的DAL,并且在特定的NHibernate的SchemaExport函数中,在执行单元测试之前删除/重新创建我的数据库模式.我遇到的问题是,当我运行单元测试并执行SchemaExport时,我的一个表无法每秒都丢失.这将向我表明存在某种外键问题阻止SchemaExport放弃我的表 - 但我无法弄明白.我的架构非常简单 - 人员表,地址表和PersonAddress表,以支持两者之间的多对多关系.

public class Person
{
    public virtual int Id { get; set; }
    public virtual string Name { get; set; }
    public virtual IList<Address> Addresses {get;set;}

    public Person()
    {
        this.Addresses = new List<Address>();
    }

}

public class Address
{
    public virtual int Id { get; set; }
    public virtual string Street1 { get; set; }
    public virtual string Street2 { get; set; }
    public virtual string Postcode { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

和我的NHibernate映射文件......

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
               assembly="MyHibernate" …
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping

4
推荐指数
2
解决办法
7015
查看次数

wcf System.ServiceModel.AddressAlreadyInUseException

如果这个问题在stackOverflow上出现两次,请道歉

我试图在Windows Server 2003框上运行wcf服务.我在服务主机调用Open()时收到System.ServiceModel.AddressAlreadyInUseException异常,它告诉我以下错误:

HTTP无法注册URL http:// +:8080/LogoResizer/mex /,因为TCP端口8080正被另一个应用程序使用

我读过我需要使用httpcfg.exe来注册我的命名空间,并且我已经使用了这里的GUI工具来完成它,但我仍然得到上述异常.运行"netstat -a"并不显示在端口8080上侦听的任何内容,并且运行"httpcfg.exe query urlacl"会返回以下注册的命名空间.

C:\ Program Files\Support Tools> httpcfg query urlacl URL:http:// +:80/Temporary_Listen_Addresses /

ACL:D:(A ;; GX ;;; WD)

URL : http://+:8080/LogoResizer/
Run Code Online (Sandbox Code Playgroud)

ACL:D:(A ;; GX ;;; WD)

URL : http://+:8080/LogoResizer/mex/
Run Code Online (Sandbox Code Playgroud)

ACL:D:(A ;; GX ;;; WD)

我的应用程序的配置如下:

<system.serviceModel>
    <bindings>
        <netTcpBinding>
            <binding name="NetTcpBinding_ImageResizerServiceContract" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10"
                maxReceivedMessageSize="2147483647">
                <readerQuotas maxDepth="2147483647"
                              maxStringContentLength="2147483647"
                              maxArrayLength="2147483647"
                              maxBytesPerRead="2147483647"
                              maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> …
Run Code Online (Sandbox Code Playgroud)

wcf httpcfg.exe

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

Rhino Mocks:Mocked方法返回null

我正在尝试模拟数据存储库对象但是在我的MockRepository上设置了一个期望之后,它每次都返回null.我的代码如下:

    [Test]
    public void GetById_NotNull()
    {
        Person expectedPerson = new Person() { Id = 1, Name="Jon"};

        MockRepository MockRepository = new MockRepository();
        var FakePersonRepository = MockRepository.StrictMock<IRepository<Person>>();

        FakePersonRepository.Expect(action => action.Get(1)).IgnoreArguments().Return(expectedPerson);

        PersonService PersonService = new PersonService(FakePersonRepository);
        Person returnedPerson = PersonService.Get(1);

        Assert.IsNotNull(returnedPerson);
    }

    //and inside my person service
    public class PersonService
    {
         private IRepository<Person> _PersonRepository;
         public PersonService(IRepository<Person> PersonRepository)
         {
           this._PersonRepository = PersonRepository;
         }

         public Person Get(int Id)
         {
             Person p = _PersonRepository.Get(Id);
             return p;
          }
    }
Run Code Online (Sandbox Code Playgroud)

测试底部的断言失败,返回的人总是为空.我知道我的模拟......想法一定是做错了吗?

rhino-mocks mocking

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

NHibernate映射多对多连接表

我的数据库结构如下所示:

Person
  Id
  Name
  FieldA
  FieldB

Phone
  Id
  Number

PersonPhone
  PhoneId
  PersonId
  IsDefault
Run Code Online (Sandbox Code Playgroud)

我对人物和电话对象的NHibernate映射是直截了当的,它的PersonPhone我很难用.我希望将PersonPhone对象的集合作为Person的属性,这将允许我拥有一个人的电话号码,并且能够分辨哪个是某个人的"默认"或主要电话号码.

理想情况下我喜欢我的PersonPhone对象看起来像这样:

public class PersonPhone
{
    public virtual Person Person { get; set; }
    public virtual Phone Phone { get; set; }
    public virtual bool IsDefault { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我对此表的NHibernate映射如下所示:

<class name="PersonPhone" table="PersonPhone">
    <composite-id>
        <key-property name="Person" column="PersonId" />
        <key-property name="Phone" column="PhoneId" />
    </composite-id>
    <property name="IsDefault" column="IsDefault"/>
</class>
Run Code Online (Sandbox Code Playgroud)

但是当NHibernate编译我的映射时,我得到一个错误说:

无法编译映射文档:MyApp.Entities.PersonPhone.hbm.xml.NHibernate.MappingException:无法确定类型:MyApp.Entities.Person,MyApp.Entities,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null,对于列:NHibernate.Mapping.Column(PersonId)

关于如何映射的任何想法?

nhibernate nhibernate-mapping

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

在MVVM中使用WPF Infragistics Excel导出功能

我正在使用Infragistics WPF数据网格,我想利用Infragistics提供的Excel导出功能.Excel导出的API需要网格实例作为参数.这不是MVVM友好的,因为我更喜欢处理命令来导出我的viewModel中的数据,这些数据在我的视图中不知道datagrid控件的实例.

有没有人知道更多的MVVM友好机制来使用Infragistics库进行excel导出(最好基于网格绑定的集合)?

wpf infragistics mvvm export-to-excel

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

用于验证列表的lambda表达式是否正确排序

我想写一个lambda表达式来验证列表是否正确排序.我有一个List,其中一个人有一个Name属性,例如:

IList<Person> people = new List<Person>();
people.Add(new Person(){ Name = "Alan"});
people.Add(new Person(){ Name = "Bob"});
people.Add(new Person(){ Name = "Chris"});
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过Name属性测试列表是否按ASC排序.所以我就是这样的

Assert.That(people.All(....), "list of person not ordered correctly");
Run Code Online (Sandbox Code Playgroud)

我怎么能写一个lambda来检查列表中的每个Person的名字是否少于列表中的下一个人?

c# linq lambda

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

如何从 .NetStandard 类库引用 net40 框架程序集?

在project.json项目系统下,我能够指定每个框架的框架程序集依赖关系。dotnet 文档(现已过时)显示了以下示例。

{
    "frameworks":{
        "net20":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net35":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net40":{
            "frameworkAssemblies":{
                "System.Net":""
            }
        },
        "net45":{
            "frameworkAssemblies":{
                "System.Net.Http":"",
                "System.Threading.Tasks":""
            }
        },
        ".NETPortable,Version=v4.5,Profile=Profile259": {
            "buildOptions": {
                "define": [ "PORTABLE" ]
             },
             "frameworkAssemblies":{
                 "mscorlib":"",
                 "System":"",
                 "System.Core":"",
                 "System.Net.Http":""
             }
        },
        "netstandard16":{
            "dependencies":{
                "NETStandard.Library":"1.6.0",
                "System.Net.Http":"4.0.1",
                "System.Threading.Tasks":"4.0.11"
            }
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

对于更新后的 dotnet sdk v1.1.1,如何在 csproj 下执行此操作?我想引用 net40 的 System.Configuration,但不引用 netstandard 1.6。

.net c# csproj project.json .net-standard

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