我正在使用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对象上的反射?
在 .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我们可以“固定”我们不想升级的第三方软件包,也可以更新到最新的快速移动依赖项。
我正在尝试为 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) 我正在将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) 如果这个问题在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)
URL : http://+:8080/LogoResizer/mex/
Run Code Online (Sandbox Code Playgroud)
我的应用程序的配置如下:
<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) 我正在尝试模拟数据存储库对象但是在我的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)
测试底部的断言失败,返回的人总是为空.我知道我的模拟......想法一定是做错了吗?
我的数据库结构如下所示:
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)
关于如何映射的任何想法?
我正在使用Infragistics WPF数据网格,我想利用Infragistics提供的Excel导出功能.Excel导出的API需要网格实例作为参数.这不是MVVM友好的,因为我更喜欢处理命令来导出我的viewModel中的数据,这些数据在我的视图中不知道datagrid控件的实例.
有没有人知道更多的MVVM友好机制来使用Infragistics库进行excel导出(最好基于网格绑定的集合)?
我想写一个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的名字是否少于列表中的下一个人?
在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。
c# ×3
nhibernate ×2
wcf ×2
.net ×1
asp.net ×1
csproj ×1
httpcfg.exe ×1
httpcontext ×1
infragistics ×1
lambda ×1
linq ×1
mocking ×1
mvvm ×1
nuget ×1
nuget-update ×1
owin ×1
project.json ×1
rhino-mocks ×1
wcf-rest ×1
wpf ×1