小编Joe*_*jr2的帖子

如何指定用于WebClient类的SSL协议

我有一个应用程序使用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,如果这有所作为.

.net c# ssl webclient

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

实体框架 - 我的对象上下文在哪里?

好吧,我显然遗漏了一些非常基本的东西.我是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"自动生成"的.如果是这样,那么它在哪里?

我显然在这里遗漏了一些非常简单的东西.这不是那么困难.

entity-framework objectcontext

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

对 Scala Option 的值(如果存在)调用方法

我试图找出重构以下代码以消除 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 永远不会包含多个连接,其他人稍后查看我的代码可能会相信它可以包含多个连接。

有没有更好的方法来做到这一点既简洁又清晰?

scala scala-option

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

使 RabbitMQ 持久/持久队列在 Kubernetes Pod 重启后仍能存活

我们的应用程序使用只有一个节点的 RabbitMQ。它在单个 Kubernetes Pod 中运行。

我们使用持久/持久队列,但是每当我们的云实例关闭和备份,并且 RabbitMQ pod 重新启动时,我们现有的持久/持久队列就会消失。

起初,我认为这是存储队列的卷不持久的问题,但事实并非如此。

看来队列数据存储在/var/lib/rabbitmq/mnesia/<user@hostname>. 由于 Pod 的主机名每次都会更改,因此它会为新主机名创建一组新数据,并失去对先前持久化队列的访问权限。我在 mnesia 文件夹中建立了许多文件集,全部来自之前的重新启动。

我怎样才能防止这种行为?

我能找到的最接近的答案是在这个问题中,但是如果我正确地阅读它,那么只有当集群中同时有多个节点共享队列数据时,这才有效。我不确定它是否适用于单个节点。或者会吗?

persistence persistent-storage rabbitmq kubernetes

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

我可以告诉NDepend忽略一个结果吗?

我正在VS 2012中针对我的C#项目运行NDepend.我已经查看了一个特定的"严重违反规则",并决定我要保持原样.我想告诉NDepend忽略这一违规行为并且不计入我的关键规则违规计数,这样我就可以让底部的点不再是红色.

如果重要:它是"具有太多参数的功能".函数的目的是在数据库表中创建一个日志条目,我需要传入所有值(其中11个)来填充表(在对它们应用一些逻辑之后).我想我可以将所有值放入一个结构或类中,并将其作为单个值传递,但结构/类没有其他用途,而不是调用这个函数,所以这对我来说似乎有些愚蠢.

所以,我正在寻找一种方法来做一些事情,比如右键单击结果并选择"永久忽略此结果",就像你可能使用拼写检查一样,但我没有看到任何这样的选项.

有没有办法做到这一点?

我不想排除整个规则或修改它以增加参数的最大数量,因为可能存在我同意应该修改该函数的其他实例.

ndepend visual-studio-2012

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

JDBC 到 Spark Dataframe - 如何确保均匀分区?

我是 Spark 的新手,正在通过 JDBC 从 Postgres 数据库表创建一个 DataFrame,使用spark.read.jdbc.

我对分区选项有些困惑,特别是partitionColumnlowerBoundupperBoundnumPartitions


  • 文档似乎表明这些字段是可选的。如果我不提供它们会怎样?
  • Spark 如何知道如何对查询进行分区?那会有多高效?
  • 如果我确实指定了这些选项,即使 partitionColumn 分布不均匀,我如何确保分区大小大致相同?

假设我将有 20 个执行程序,所以我将 numPartitions 设置为 20。
我的 partitionColumn 是一个自动递增的 ID 字段,假设值范围从 1 到 2,000,000
但是,因为用户选择处理一些非常旧的数据,连同一些真正的新数据,中间没有任何内容,大多数数据的 ID 值要么低于 100,000,要么超过 1,900,000。

  • 我的第 1 位和第 20 位执行者会得到大部分工作,而其他 18 位执行者则大部分时间都坐在那里闲置吗?

  • 如果是这样,有没有办法防止这种情况?

partitioning jdbc apache-spark apache-spark-sql

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

WCF和EF - 如何强制主机使用自己的连接字符串

请原谅这个极端新手的问题.我无法在其他任何地方找到答案.

我正在使用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)

c# wcf entity-framework connection-string

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

ArgumentException 多个参数和嵌套参数的 ParamName 约定

考虑我有一个类如下:

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 方工具中的任何内容,还是只是提供信息,供堆栈中的其他调用代码使用?

.net c# argumentexception

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

强制视图为方形

我正在尝试使用 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 绑定到它的实际宽度,但我不知道这是否可能,或者如果可以的话怎么做。如果没有,还有其他选择吗?

user-interface xaml xamarin.forms

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

Visual Studio 查找未使用的 nuget 包

有时我将 Nuget 包加载到我最终没有实际使用的解决方案中,或者我使用了一段时间,然后切换到其他东西,并忘记删除旧包。我怀疑我的解决方案安装了我实际上不再使用的 Nuget 包。

除了一个一个地删除它们并检查构建错误之外,有没有办法找到未使用的已安装 Nuget 包?

visual-studio nuget

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