小编Dav*_*ans的帖子

最大阵列长度配额

我正在编写一个小的WCF/WPF应用程序来调整图像大小,但当我尝试从客户端向我的服务发送大小为28K的图像时,WCF让我感到悲伤.当我发送较小的图像时,该服务工作正常.我立即认为这是一个配置问题,我在网上搜索了关于绑定配置中MaxArrayLength属性的帖子.我已经在客户端和服务器上将这些设置的限制提高到最大值2147483647但仍然出现以下错误:

格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://mywebsite.com/services/servicecontracts/2009/01:OriginalImage时出错.InnerException消息是'反序列化System.Drawing.Image类型的对象时出错.读取XML数据时已超出最大数组长度配额(16384).可以通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxArrayLength属性来增加此配额.有关更多详细信息,请参阅InnerException.

我已经使我的客户端和服务器配置相同,它们看起来如下:服务器:

<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="32"
                              maxStringContentLength="2147483647"
                              maxArrayLength="2147483647"
                              maxBytesPerRead="2147483647"
                              maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                    <message clientCredentialType="Windows" />
                </security>
            </binding>
        </netTcpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceBehavior">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service name="LogoResizer.WCF.ServiceTypes.ImageResizerService" behaviorConfiguration="ServiceBehavior">
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:900/mex/"/>
                    <add baseAddress="net.tcp://localhost:9000/" />
                </baseAddresses>
            </host>
            <endpoint binding="netTcpBinding" contract="LogoResizer.WCF.ServiceContracts.IImageResizerService" />
            <endpoint  address="mex" …
Run Code Online (Sandbox Code Playgroud)

.net wcf wcf-binding

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

模拟实体框架上下文

我正在使用实体框架来访问我的数据库,我想在单元测试中模拟数据库上下文,以便我可以测试我的中间层类,而不依赖于实际数据.我知道我不是第一个提出这个问题的人(模拟实体框架模型),但经过一些谷歌搜索后,我有一种本能,即可以仅根据模型的元数据来实例化上下文.

有没有人能够做到这一点?

unit-testing entity-framework mocking

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

wpf边框控件跨越listboxItem的宽度

我试图在我的wpf应用程序中为业务对象定义一个dataTemplate,其集合绑定到ListBox.

<UserControl.Resources>
    <DataTemplate x:Key="ResizedItemsDataTemplate" DataType="{x:Type resizer:ResizeMonitorItem}">
              <Border x:Name="bdr" BorderBrush="Blue" 
                                     BorderThickness="1" 
                                     CornerRadius="2" 
                                     Width="auto"
                                     HorizontalAlignment="Stretch"
                                     VerticalAlignment="Stretch">
                    <Grid Margin="2">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="14"></RowDefinition>
                            <RowDefinition Height="14"></RowDefinition>
                        </Grid.RowDefinitions>


                        <TextBlock Grid.Row="0" Text="{Binding SaveAsFileName}"></TextBlock>
                        <TextBlock Grid.Row="1" Text="{Binding ResizedImageFilePath}"></TextBlock>
                    </Grid>
             </Border>
    </DataTemplate>
</UserControl.Resources>
<Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="0">    
    <Border BorderThickness="0,0,0,5" BorderBrush="DarkGray" >
        <ListBox x:Name="ListBoxResizeItems" ItemsSource="{Binding Path=ResizeItems}" BorderThickness="0" ItemTemplate="{DynamicResource ResizedItemsDataTemplate}">
        </ListBox>
    </Border>
</Grid>
Run Code Online (Sandbox Code Playgroud)

如何使用x:Name = bdr定义边框以跨越每个列表框项的整个宽度?目前它只跨越其中的文本块,不需要填充listboxitem的整个宽度,并且每个listboxitem也有所不同.

wpf listbox border

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

web.config转换在部署时不构建

我想知道如何执行以下操作

  • 构建ASP.NET网站并将其打包到文件系统
  • 能够将网站部署到一个或多个环境.我希望配置文件的转换发生在部署点,而不是在构建点.这样,我的代码不会针对每个部署进行重新编译,也不存在引入新更改的风险.

从我自己的阅读中我不确定如何做到这一点.WebDeploy似乎基于配置打包,转换和部署,但我不确定如何解耦这些步骤以避免需要从源代码控制重新编译代码.

有没有人有解决这个问题的经验?

asp.net msbuild tfs msdeploy webdeploy

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

Visual Studio 2010数据库版本模式比较目标是dbproj的位置

我使用Visual Studio 2010的数据库版本和运行对SQL数据库实例同步了数据库这在我的项目(dbproj)的arent但新的比较对象的模式.我的解决方案包含许多项目,其中一些通过数据库引用相互引用.当我写从我的架构更新任何引用比较我的目标项目,在我的其他项目对象加入硬引用和不要使用得到添加数据库引用时设置的SQLCMD变量.

这会导致我的解决方案出现警告和错误,直到我手动换出sqlcmd变量的硬引用.我发现我可以重新制作数据库引用,它可以选择通过项目获取所有硬引用,但这仍然很麻烦.有没有办法使用为我的项目定义的现有sqlCmd变量集,以便使用变量引用将更新的内容写入我的项目?

sql sql-server sqlcmd visual-studio-2010 dbproj

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

Log4net appender阈值无法正常工作

我在我的log4net配置中为我的应用程序设置了一个logfileAppender和一个consoleAppender.我希望logfile appender只写上面的ERROR消息和控制台appender来编写DEBUG及以上版本.

我的配置是:

<log4net debug="false">

<appender name="LogFileAppender" type="log4net.Appender.FileAppender,log4net" >
  <param name="File" value="log.txt" />
  <param name="AppendToFile" value="true" />
  <layout type="log4net.Layout.PatternLayout,log4net">
    <param name="ConversionPattern" value="%d %M - %m%n" />
  </layout>
  <threshold value="ERROR"/>
</appender>

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"   >
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%d %m%n" />
  </layout>
</appender>


<root>
  <priority value="DEBUG" />
  <appender-ref ref="ConsoleAppender" />
  <appender-ref ref="LogFileAppender" />
</root>

</log4net>
Run Code Online (Sandbox Code Playgroud)

我发现ERROR和DEBUG都输出到我的logfile appender.如何将其限制为仅ERROR?

log4net log4net-configuration

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

在powershell脚本中将路径传递给SqlCmd

我正在尝试编写一个powershell脚本,它将执行sqlcmd.exe来运行sql脚本.该脚本包含一个SQLCMD变量,我想通过sqlcmd的-v开关在命令行中传入该变量.问题是,PowerShell是做一些奇怪的,当我经过的路径作为我的变量,而这又导致SQL脚本失败的一个值.

比如说我打电话:

$path = 'C:\path'
sqlcmd -SMySQLServerInstance  -i 'MySqlScript.sql'  -v MyVariablePath=$path
Run Code Online (Sandbox Code Playgroud)

运行时我收到一个错误,上面写着:

Sqlcmd: ':\path': Invalid argument.
Run Code Online (Sandbox Code Playgroud)

没有我试过的双重或单引号$pathMyVariablePath=$path 解决问题.

有人可以提供一个简单的规范示例,说明如何做到这一点?

powershell sqlcmd

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

System.Net.FtpWebRequest GetDateTimestamp示例

我正在寻找一小段示例代码,它使用System.Net.FtpWebRequest命名空间来获取ftp服务器上指定远程文件的时间戳.我知道我需要将我的请求对象的Method属性设置为WebRequestMethods.Ftp.GetDateTimestamp,但我不知道如何将响应返回到System.DateTime对象中.

ftpwebrequest

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

Visual Studio和MSBuild在WiX项目上以不同方式触发BeforeBuild

我有一个WiX(Windows安装程序XML)v3项目,其中包含对我解决方案中其他项目的引用.我正在使用WiX项目的BeforeBuild事件中的复制任务来收集参考项目的一些输出,以便以后使用我的Heat.

当我在Visual Studio中构建WiX项目(而不是解决方案)时,每个引用的项目都是在我的WiX项目之前构建的,一旦它们构建完毕,我的WiX项目上的BeforeBuild事件就会触发,然后构建WiX项目本身.这是我期望的行为 - 我能够从WiX BeforeBuild中的引用项目的bin目录访问文件,并在WiX项目执行Candle之前使用它们.

我遇到的问题是当我通过MSBuild构建WiX文件时,我发现在任何引用的项目之前,BeforeBuild事件会立即触发.这种行为差异意味着从命令行构建时我无法使用引用项目的输出.

为什么在通过命令行上的MSBuild运行到Visual Studio内部时,BeforeBuild在不同的时间点执行?

msbuild wix

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

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

在 .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
查看次数