小编Mar*_*rio的帖子

MVC 4中正确的JSON序列化

我想让JSON'正确'序列化(camelCase),并且能够在必要时更改日期格式.

对于Web API,它非常简单 - 在Global.asax中,我执行以下代码

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Run Code Online (Sandbox Code Playgroud)

这个代码在管道级别按照我喜欢的方式处理序列化.

我想在MVC 4中完成同样的事情 - 从控制器操作方法返回的任何JSON都要正确序列化.通过一点搜索,我发现以下代码将引入Global.asax应用程序启动:

HttpConfiguration config = GlobalConfiguration.Configuration;
Int32 index = config.Formatters.IndexOf(config.Formatters.JsonFormatter);
config.Formatters[index] = new JsonMediaTypeFormatter
{
     SerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
};
Run Code Online (Sandbox Code Playgroud)

它似乎执行正常,但当我从控制器返回JSON时,它都是PascalCased.我的动作方法的一个简单示例:

private JsonResult GetJsonTest()
{
    var returnData = dataLayer.GetSomeObject();
    return Json(returnData, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

我错了吗?知道如何在管道级别实现这一目标吗?

c# asp.net asp.net-mvc json asp.net-mvc-4

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

远程计算机无法连接到Visual Studio Web服务器

我记得当MS正在开发Cassini时 - 我相信他们已经把它推到了VS 05/08,所以我认为这是一个Cassini Web服务器问题.

我在Visual Studio 2008中使用Windows XP,当我想测试具有多个浏览器和多个操作系统的网页/样式时,发现它非常不方便.现在我必须在我们的服务器上部署代码,如果有任何需要更新的更新,这个过程会变成很长时间.由于我使用的是XP/IIS 5,因此不能选择使用IIS.在XP上使用IIS需要一个项目的额外前缀,这会打破所有链接,css等.这也是一个非常快速的开发项目,所以像root目录这样的东西应该被拉出来配置不是,我很喜欢有这种类型的解决方案,但它没有在这个项目中实现.似乎非常粗略,MS不会允许在某处允许远程连接的简单标志 - 它非常简单(http://www.devx.com/dotnet/Article/11711)但我不想重新编译卡西尼.

有谁知道如何让其他计算机看到Visual Studio 2008中的集成开发Web服务器?这样可以节省大量时间.

.net asp.net visual-studio-2008 visual-studio

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

Request.UrlReferrer null?

在aspx C#.NET页面(我正在运行框架v3.5)中,我需要知道用户来自哪里,因为他们无法登录而无法查看页面.如果我有页面A(用户想要查看的页面)重定向到在页面B(登录页面)中,Request.UrlReferrer对象为null.

背景:如果用户未登录,我将重定向到"登录"页面(B在此方案中).登录后,我想将它们返回到他们被迫登录之前请求的页面.

更新:
一个很好的快速解决方案似乎是:
//if user not logged in Response.Redirect("..MyLoginPage.aspx?returnUrl=" + Request.ServerVariables["SCRIPT_NAME"]);
然后,只需查看登录页面上的QueryString,您强制它们将用户放在成功登录后的位置.

.net c# visual-studio-2008 visual-studio

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

如何为Mercurial最佳地配置中央存储库/多个中央存储库?

我是Mercurial的新手,并试图弄清楚它是否可以取代SVN.我工作的每个人都使用了SVN,CVS和VSS(颤抖),所以这可能是一个很大的变化.在阅读了它的合并和分支功能后,我一直很感兴趣,但有一些保留.

我们目前在SVN上,并有一个中央存储库.从我的阅读来看,似乎在使用Mercurial时,所有项目都没有一个中央存储库.注意:我们将每个项目视为单独的逻辑代码集或Visual Studio解决方案.它独立运行.

我们在一个中央SVN存储库中有大约60个单独的项目.在阅读了Mercurial之后,在我看来,我必须为服务器上的每个项目创建60个独立的中央存储库.问题#1:我应该为每个项目创建一个单独的存储库吗?

如果是,那么我担心配置和托管60个独立的中央Mercurial服务器.我开始认为我可以配置一个文件,但似乎每个存储库都必须使用"C:...\MyRepository.hg\hgrc"文件(Windows安装)单独配置.它似乎我必须运行60个服务器(> hg服务),我会假设在不同的端口上.问题2:如果问题1的答案是肯定的,那么每个项目应该有一个中央存储库,那么人们如何管理多个多个存储库?

最后,我没有考虑将所有历史记录和更改从一个SVN存储库移动到一堆独立的Mercurial存储库,但是会感谢那些已经完成此操作的人(或者甚至是可能的)的任何评论.

version-control mercurial dvcs tortoisehg

13
推荐指数
2
解决办法
3814
查看次数

Nuget的默认软件包源默认为新添加的源,而不是All或nuget.org

因为我们有一个内部服务器在工作,所以我向Visual Studio添加了一个nuget“包源”。

现在,Visual Studio始终默认使用我的内部服务器,并且在我将包源切换为All或之前,无法找到我们的大多数nuget包。nuget.org

这是一个小小的麻烦,但是在过去的几周里,每次我需要与nuget软件包管理器一起工作时,我都会做更多的点击。谁能告诉我如何默认All而不是始终默认为Internal nuget

nuget默认为内部软件包服务器

visual-studio nuget visual-studio-2017

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

MSDeploy抛出奇怪的错误:xxxxx.dll的流数据尚不可用

我正在将多个.Net项目部署到不同的服务器上.为此,我的团队正在使用TFS构建,然后从构建模板调用ps1脚本,该脚本使用msdeploy推送到所有不同的服务器.这一切都非常有事,不,我现在不能自由地转向不同的东西.这个过程已经工作了几个月而没有任何问题.

今天,部署连续几次失败并出现一些不同的错误.仅这一点让我感到困惑(也许并不相关),但现在我得到的是:

在远程计算机上处​​理请求时发生错误."C:\ Builds\SomeDirectory\obj\Debug\Package\PackageTmp\AReferencedProject.dll"的流数据尚不可用.

当我的脚本运行msdeploy时会发生此错误.这个dll由Windows服务使用,但服务已停止(据我所知 - 服务停止没有丢失任何错误)并且dll不是"只读".dll存在于正在构建/部署的计算机上以及正在部署到的计算机上.

我发现如果从正在部署的服务器上删除"不可用"的dll,我可以避免此错误,但问题会在每次后续部署时发生,除非我在每次部署之前手动删除此dll.

我已经看到了这个问题,但我没有推动Azure,只是推向Windows Server 2008.有谁知道为什么Microsoft Web部署(msdeploy)会抛出此错误?

.net msdeploy windows-server-2008 windows-server microsoft-web-deploy

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

模拟真实的 gRPC 服务器响应

我们的管道中有一个需要进行集成测试的微服务(真实调用,但没有与 kubernetes 中测试命名空间之外的任何内容进行网络通信)。它还依赖于我们无法控制的外部 gRPC 服务器。

集成测试图

上面是我们希望发生的情况的图片。左侧的白框是为微服务边界提供“外部”数据的代码。然后,它继续通过 REST 调用代码,直到返回正确数量的记录或超时。该代码从内部数据库中提取记录,以及从 gRPC 调用中提取与这些记录相关的数据。由于我们不拥有 gRPC 服务,但正在进行集成测试,因此我们需要对我们调用的两个 gRPC 服务(蓝色框)进行一些预定义的响应。

由于我们的集成测试现在是独立的,并且我们不想仅仅为了模仿调用而编写一个全新的实际 gRPC 服务器实现,有没有办法建立一个真正的 gRPC 服务器并将其配置为返回响应?该请求非常类似于模拟设置,只不过使用的是实际服务器。

我们需要能够:

  1. 为服务器提供多个原始文件进行解释,并将其公开为端点。Proto 文件必须能够具有不同的包名称
  2. 使用我们可以存储在源代码管理中的文件,配置对每个调用的响应
  3. 能够在Linux docker容器中运行(没有Windows)

我确实找到了grimock,它看起来几乎正是我们所需要的,但它只为每个容器提供一个原始文件。据说它可以服务多个文件,但我无法让它工作,并且他们提供两个文件的示例意味着每个原始文件必须具有相同的包名称,这在我们的场景中可能永远不会发生。与此同时,我们正在使用它,但如果我们有 10 个 gRPC 调用依赖项,我们现在必须运行 10 个 gigmock 服务器。

integration-testing google-kubernetes-engine grpc

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

如何在Visual Studio中自动生成多个getter/setter或访问器

在开始之前,我知道有这篇文章并且它没有回答我的问题:如何在Visual Studio中生成getter和setter?

在Visual Studio 2008中,可以通过右键单击私有变量 - > Refactor - > Encapsulate Field来自动生成getter和setter(访问器)...

这对于有2种或3种方法的课程来说非常棒,但是来自MS!你曾经和一个有几个访问者的班级一起工作过吗?

我正在寻找一种方法来通过几次点击生成ALL(Eclipse那里的人会知道我在说什么 - 你可以右键单击一个类并选择'生成访问者'.完成.).我真的不喜欢花20分钟的时间点击向导.我曾经有一些.NET 1.0代码可以生成类,但它早已不复存在,这个功能应该是IDE的标准.

更新:我可能会提到我已经发现Linq to Entities和SQLMetal是非常酷的想法,而且超出了我在上面段落中的简单请求.

ide code-generation visual-studio-2008 visual-studio

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

Visual Studio 2008崩溃可怕

这已经发生在我身上3次,我想知道是否有人遇到同样的问题.我正在运行Visual Studio 2008 SP1,并点击SQL Server 2005开发人员版.

为了测试,我使用服务器资源管理器浏览我已经创建的数据库.为了测试,我将手动插入数据(右键单击表 - >显示表数据).

我可以这样做一个星期没有问题,但有时我的电脑会在星星对齐时崩溃.它没有挂起,它没有蓝屏,我看到bios引导屏幕.2秒后我在一个尚未保存的新行中输入一些值.我从来没有见过像这样的崩溃,它会立即重新启动.我认为当我输入违反数据库约束的东西时可能会发生这种情况,但我还不确定(需要更多的崩溃来确定它).

有人有同样的问题吗?知道解决方案吗?太糟糕了VS没有用托管代码编写,是吗?:)

更新:我可以通过插入重复的主键,单击该行,在数据库错误通知上单击"确定",然后再次尝试更新主键来重现它.我同意 - 这肯定听起来像硬件或驱动程序问题,但我不确定如何解决这个问题,因为这只发生在VS中做这件事时.我也没有超频 - 我正在运行普通(单核)3 Ghz戴尔.

c# sql-server ide visual-studio-2008 visual-studio

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

加载了错误的App.config

我建立了一个.NET 3.5类库,该库读取App.config文件以获取所需的值。当我在Visual Studio中测试它时,它可以很好地提取配置值。为了对其进行测试,我只是将项目更改为控制台应用程序并执行方法调用。

我需要从许多其他.NET程序中调用该类库,并且我希望该类库能够自给自足(我应该能够从任何其他程序中调用它,并且它应该使用自己的配置文件,不知道关于任何调用配置文件等)。

我可以添加对该dll的引用(因为我仍在开发中,我正在使用VS 2008,因此尚未向GAC中添加任何东西),但类库正在读取的App.config来自调用程序的App.config,而不是类库的App.config。

类库dll在同一目录中有配置文件,因此应该可以找到它,并且调用应用程序的名称也不同。我在App.config中使用标准键值对(例如,配置文件myClassLibrary.dll.config的名称),并通过以下代码行获取值:

String myVal = ConfigurationSettings.AppSettings["myConfigSetting"];
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这一问题?

.net c# configuration .net-3.5 c#-3.0

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

为什么RestSharp以不同方式反序列化两个日期?

我有一个休息电话返回此信息(使用Chrome中的Advance Rest Client进行测试):

MyObject: [22]
0:  {
ID: "123456"
UTC1: "2013-04-19T03:12:32Z"
UTC2: "2013-04-19T03:12:36.994Z"
}
Run Code Online (Sandbox Code Playgroud)

抓取响应并将其序列化为对象的代码如下所示:

IRestResponse<List<MyObject>> response = client.Execute<List<MyObject>>(request);
Run Code Online (Sandbox Code Playgroud)

当我查看响应对象时,其中一个日期是错误的.如果我检查它或以任何方式使用对象我得到这个:

UTC1: 4/19/2013 3:12     
UTC2: 4/18/2013 9:12:36 PM <--CONVERTED!!
Run Code Online (Sandbox Code Playgroud)

我需要将两者序列化为响应中返回的时间,而不是从UTC/GMT转换为本地时间.如上所示,一个值保持其UTC值,而另一个值转换为我的时区.我认为两者都是通过Convert.DateTime函数运行的,但如果我用字符串执行,则两个值都会转换为本地时间.我意识到原始值(正在转换的那个)之一并不完全符合ISO 8601格式(精度太高); 不幸的是,这是我现在必须处理的数据.

谁能告诉我如何强制RestSharp确保两个日期都是UTC?

.net c# restsharp deserialization asp.net-web-api

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

在单元测试中,当使用nSubstitute和Autofixture作为DI容器时,如何获取模拟对象?

我曾经在单元测试中使用 Moq 和 AutoMoqer,但我的团队决定改为 NSubstitute。我们大量使用 DI,因此我希望能够请求一个目标进行测试,并让该目标自动将所有模拟对象提供给其构造函数,或者换句话说,是一个传入模拟的 DI 容器。我还想根据需要修改这些模拟对象。

使用 Moq/AutoMoq/MSTest 的示例

[TestMethod]
public void ReturnSomeMethod_WithDependenciesInjectedAndD1Configured_ReturnsConfiguredValue()
{
    const int expected = 3;
    var diContainer = new AutoMoq.AutoMoqer();

    var mockedObj = diContainer.GetMock<IDependency1>();
    mockedObj
        .Setup(mock => mock.SomeMethod())
        .Returns(expected);

    var target = diContainer.Resolve<MyClass>();
    int actual = target.ReturnSomeMethod();

    Assert.AreEqual(actual, expected);
}

public interface IDependency1
{
    int SomeMethod();
}

public interface IDependency2
{
    int NotUsedInOurExample();
}

public class MyClass
{
    private readonly IDependency1 _d1;
    private readonly IDependency2 _d2;

    //please imagine this has a bunch of dependencies, …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing dependency-injection autofixture nsubstitute

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

Caliburn.Micro标签不按惯例约束

我一直在使用Caliburn.Micro通过Silverlight 5中的约定进行绑定并且非常喜欢它.以下是ViewModel的示例属性:

private String _vmStringProp = "";
public String VmStringProp
{
    get
    {
        return _vmStringProp;
    }

    set
    {
        _vmStringProp = value;
        NotifyOfPropertyChange(() => VmStringProp);
    }
}
Run Code Online (Sandbox Code Playgroud)

此属性仅通过命名绑定在View中:

<TextBox x:Name="VmStringProp" />
Run Code Online (Sandbox Code Playgroud)

这非常有效.但是,如果我将其更改为TextBlock或Lable(下面的示例),则会抛出异常.

<sdk:Label x:Name="VmStringProp" />
Run Code Online (Sandbox Code Playgroud)

它可以正常工作,如果您将其更改为像普通Silverlight一样绑定,但我宁愿在整个项目中保持一致,而不是通过约定绑定某些绑定,而其他绑定则取决于控件的类型.有谁知道为什么我不能通过约定与标签和TextBlocks绑定?

.net c# silverlight mvvm caliburn.micro

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