我有一个应用程序使用HTTPS POST将数据发送到服务器.我使用System.Net.WebClient对象来执行此操作.这是一个发送一些数据的函数:
private byte[] PostNameValuePairs(string uri, NameValueCollection pairs)
{
byte[] response;
String responsestring = "";
using (WebClient client = new WebClient())
{
client.Headers = GetAuthenticationHeader();
string DataSent = GetNameValueCollectionValuesString(pairs);
try
{
response = client.UploadValues(uri, pairs);
responsestring = Encoding.ASCII.GetString(response);
}
catch (Exception e)
{
responsestring = "CONNECTION ERROR: " + e.Message;
return Encoding.ASCII.GetBytes(responsestring);
}
finally
{
_communicationLogger.LogCommunication(uri, client.Headers.ToString(), DataSent, responsestring);
}
}
return response;
}
Run Code Online (Sandbox Code Playgroud)
我们传入一个以https://开头的URI
这已经很长时间了.今天,我们开始收到以下连接错误:"基础连接已关闭:发送时发生意外错误".我们对服务器的所有者进行了一些故障排除,他们最终将其缩小到以下内容.他们对服务器进行了更改以阻止TLS 1.0,并表示我们现在需要使用TLS 1.1或1.2发送数据.
我需要在我的WebClient对象(或我的函数中的其他位置)中设置什么才能使用TLS 1.1或1.2而不是TLS 1.0?
我们正在使用.NET Framework 4.5,如果这有所作为.
好吧,我显然遗漏了一些非常基本的东西.我是Entity Framework的新手.
我想调用存储过程而不导入它们,所以我打算使用ExecuteStoreQuery().根据文档,ExecuteStoreQuery是ObjectContext的一种方法.但是,我不知道从哪里获取我的ObjectContext.
我使用Database First生成了我的entites.到目前为止,我一直在访问我的实体,如下所示:
var db = new MyEntities();
PRODUCT p = db.PRODUCTS.First(a => a.PRODUCTSKEY == thekey);
Run Code Online (Sandbox Code Playgroud)
但是我不能调用db.ExecuteStoreQuery,因为db不是ObjectContext.
我已经用Google搜索了如何从实体获取ObjectContext.我找到了一些答案,但是他们都被警告,并说这是一种解决方法,只有在没有其他选择时才使用它.好的,那么正确的方法是什么?
我发现使用ExecuteStoreQuery的所有示例都假设您已经拥有了ObjectContext.不是很有帮助.
我发现一个网站声明ObjectContext是由Entity Framework"自动生成"的.如果是这样,那么它在哪里?
我显然在这里遗漏了一些非常简单的东西.这不是那么困难.
我试图找出重构以下代码以消除 Option.get() 的使用的最佳方法。我知道使用 get 方法被认为是不好的做法。
if (myConnection.isDefined) {
myConnection.get.close
}
Run Code Online (Sandbox Code Playgroud)
其中 myConnection 的类型为 Option[Connection]
getOrElse 似乎不起作用,因为没有“else”对象可以调用该方法。如果 myConnection 是 None,那么我不想做任何事情。
我想我可以使用 forEach 像:
myConnection.foreach{ c => c.close }
Run Code Online (Sandbox Code Playgroud)
这可行,但对我来说看起来很奇怪。就我而言,myConnection 永远不会包含多个连接,其他人稍后查看我的代码可能会相信它可以包含多个连接。
有没有更好的方法来做到这一点既简洁又清晰?
我们的应用程序使用只有一个节点的 RabbitMQ。它在单个 Kubernetes Pod 中运行。
我们使用持久/持久队列,但是每当我们的云实例关闭和备份,并且 RabbitMQ pod 重新启动时,我们现有的持久/持久队列就会消失。
起初,我认为这是存储队列的卷不持久的问题,但事实并非如此。
看来队列数据存储在/var/lib/rabbitmq/mnesia/<user@hostname>. 由于 Pod 的主机名每次都会更改,因此它会为新主机名创建一组新数据,并失去对先前持久化队列的访问权限。我在 mnesia 文件夹中建立了许多文件集,全部来自之前的重新启动。
我怎样才能防止这种行为?
我能找到的最接近的答案是在这个问题中,但是如果我正确地阅读它,那么只有当集群中同时有多个节点共享队列数据时,这才有效。我不确定它是否适用于单个节点。或者会吗?
我正在VS 2012中针对我的C#项目运行NDepend.我已经查看了一个特定的"严重违反规则",并决定我要保持原样.我想告诉NDepend忽略这一违规行为并且不计入我的关键规则违规计数,这样我就可以让底部的点不再是红色.
如果重要:它是"具有太多参数的功能".函数的目的是在数据库表中创建一个日志条目,我需要传入所有值(其中11个)来填充表(在对它们应用一些逻辑之后).我想我可以将所有值放入一个结构或类中,并将其作为单个值传递,但结构/类没有其他用途,而不是调用这个函数,所以这对我来说似乎有些愚蠢.
所以,我正在寻找一种方法来做一些事情,比如右键单击结果并选择"永久忽略此结果",就像你可能使用拼写检查一样,但我没有看到任何这样的选项.
有没有办法做到这一点?
我不想排除整个规则或修改它以增加参数的最大数量,因为可能存在我同意应该修改该函数的其他实例.
我是 Spark 的新手,正在通过 JDBC 从 Postgres 数据库表创建一个 DataFrame,使用spark.read.jdbc.
我对分区选项有些困惑,特别是partitionColumn、lowerBound、upperBound和numPartitions。
假设我将有 20 个执行程序,所以我将 numPartitions 设置为 20。
我的 partitionColumn 是一个自动递增的 ID 字段,假设值范围从 1 到 2,000,000
但是,因为用户选择处理一些非常旧的数据,连同一些真正的新数据,中间没有任何内容,大多数数据的 ID 值要么低于 100,000,要么超过 1,900,000。
我的第 1 位和第 20 位执行者会得到大部分工作,而其他 18 位执行者则大部分时间都坐在那里闲置吗?
如果是这样,有没有办法防止这种情况?
请原谅这个极端新手的问题.我无法在其他任何地方找到答案.
我正在使用Entity Framework和WCF编写解决方案.我将写几个不同的客户.我已将数据库连接字符串放在Entity Framework项目的app.config和WCF主机的app.config文件中.
在宿主类中,我用一种方法编写了一个简单的测试服务契约,该方法只是从数据库(来自EF)检索所有客户,称为GetAllCustomers().然后我编写了一个简单的控制台客户端应用程序来调用主机的GetAllCustomers()并将所有客户的名字和姓氏写入控制台.
当我尝试运行客户端时,我收到一条错误消息,"在应用程序配置文件中找不到名为'TRS11Entities'的连接字符串.
如果我将连接字符串复制到客户端控制台应用程序的app.config文件,它可以正常工作,但如果我将其注释掉,它将无法再次运行.
由于WCF主机正在与数据库进行通信,而不是直接与客户端通信,因此我不明白为什么客户端需要连接字符串.我只能猜测连接字符串是从客户端传递到WCF主机到实体框架的链.如何让WCF主机告诉.NET,"降压停在这里!使用我的app.config的连接字符串并停止打扰客户端获取此信息!"
如果重要的话,我正在使用Visual Studio Pro 2012,所有项目都是用C#编写的,目标是V4.5 .NET框架.
来自WCF服务项目中的APP.CONFIG:
<system.serviceModel>
<services>
<service name="OrsonServiceLibrary.Service1">
<endpoint address="localhost" binding="basicHttpBinding" name="TRS11Entities"
contract="OrsonServiceLibrary.IService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/OrsonServiceLibrary/Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. …Run Code Online (Sandbox Code Playgroud) 考虑我有一个类如下:
class ProductPrice
{
public string ProductName { get; set; }
public decimal RegularPrice { get; set; }
public decimal SalePrice { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个这样的函数:
public decimal CalculateDiscount(ProductPrice thePriceInfo)
{
if (thePriceInfo.SalePrice > thePriceInfo.RegularPrice)
throw new ArgumentException("Sale price cannot be greater than regular price.","?????");
return (thePriceInfo.RegularPrice-thePriceInfo.SalePrice) / thePriceInfo.RegularPrice;
}
Run Code Online (Sandbox Code Playgroud)
我想知道当我调用 ArgumentException 的构造函数时,应该为 ParamName 参数(上面的 ?????? )输入什么。
我想知道在以下情况下 ParamName 的标准约定是什么:
1)导致异常的参数嵌套在一个类中(即thePriceInfo.SalePrice)
2) 异常是由于两个不同参数之间的交互造成的(在本例中 SalePrice 高于 RegularPrice)。你用逗号什么的分隔它们吗?
另外,ParamName 参数实际上用于 .NET 本身或流行的第 3 方工具中的任何内容,还是只是提供信息,供堆栈中的其他调用代码使用?
我正在尝试使用 XAML 为 Xamarin Forms 创建一个 UI,其中我在网格中有一个框架(尽管我认为对于任何类型的视图答案都是相同的)。我希望框架在它占据的网格单元中使用可用的全宽,但我想强制它的形状为方形。所以,我希望宽度自动调整大小,并将高度设置为与其实际宽度相匹配。
这是我到目前为止所拥有的:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="6*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="13*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="1"/>
<Button Grid.Row="1" Grid.Column="1"/>
<Button Grid.Row="2" Grid.Column="1"/>
<Frame Grid.Row="0" Grid.Column="3" Grid.RowSpan="3" OutlineColor="Silver" HorizontalOptions="Fill">
<Image />
</Frame>
</Grid>
Run Code Online (Sandbox Code Playgroud)
目前,框架正确地填充了可用宽度,但高度与其左侧的 3 个按钮的总高度大致相同。
我在想我可能需要将框架的 HeightRequest 绑定到它的实际宽度,但我不知道这是否可能,或者如果可以的话怎么做。如果没有,还有其他选择吗?
有时我将 Nuget 包加载到我最终没有实际使用的解决方案中,或者我使用了一段时间,然后切换到其他东西,并忘记删除旧包。我怀疑我的解决方案安装了我实际上不再使用的 Nuget 包。
除了一个一个地删除它们并检查构建错误之外,有没有办法找到未使用的已安装 Nuget 包?
c# ×3
.net ×2
apache-spark ×1
jdbc ×1
kubernetes ×1
ndepend ×1
nuget ×1
partitioning ×1
persistence ×1
rabbitmq ×1
scala ×1
scala-option ×1
ssl ×1
wcf ×1
webclient ×1
xaml ×1