小编Ray*_*Ray的帖子

在哪里"找到"C#结构?/如何在项目中组织结构

我试图理解在项目中放置C#和/或C++结构的惯例.在它自己的源文件中?如果是的话,是否有任何我应该养成习惯的惯例?

在第一年,这些约定没有真正讨论过,但一般来说,我们在结构使用或"感觉"最相关的地方"卡住"结构......

在我的特殊情况下,我有几个明确由值类型组成的结构,这些结构将在整个特定的应用程序及其类中传递,所以我不能肯定地说任何一个特定的"区域"可以声称任何类型的所有权.

c# c++ convention struct placement

11
推荐指数
2
解决办法
4711
查看次数

401尝试实施CORS for SharePoint时

我想从位于domainB.contoso.com上的Web应用程序访问位于domainA.contoso.com上的listdata.svc(一个sharepoint服务) - 身份验证似乎是个问题.

当尝试通过JQuery Ajax调用访问ListData.svc时,启用CORS,服务器返回401.如果我从SharePoint内部执行的.htm页面运行相同的查询,则调用正常,因为域名是相同.

SharePoint正在使用NTLM关闭匿名身份验证 - 我认为401是Windows凭据未传递到SharePoint服务器的结果 - 但我不知道如何正确地将这些凭据添加到标头. 我已经设置了xhrFields:{withCredentials:true},但这似乎无法解决身份验证问题.

为了启用CORS,我在IIS中的SharePoint上设置了以下HTTP响应标头:

  • Access-Control-Allow-Credentials:true
  • Access-Control-Allow-Headers:Origin,Content-Type,Accept
  • Access-Control-Allow-Origin:*
  • 访问控制请求方法:POST,GET,HEAD,OPTIONS

在我的Web应用程序的IIS中启用了Windows身份验证,我没有在IIS中设置"OPTIONSVerbHandler"HTTP处理程序.把它翻到阅读似乎没有什么区别.

JQuery Ajax调用(来自subdomainB.contoso.com上的应用程序):

 $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        url: listUrl,
        xhrFields: { withCredentials: true },
        crossDomain:true,  
        processData: false,
        async: true,
        dataType: "json",
        converters: {
            // WCF Data Service .NET 3.5 incorrectly escapes singles quotes, which is clearly
            // not required (and incorrect) in JSON specs.
            // http://bugs.jquery.com/ticket/8320?cversion=0&cnum_hist=1
            "text json": function (textValue) {
                return jQuery.parseJSON(textValue.replace(/(^|[^\\])\\'/g, "$1'"));
            }
        },
        success: function (data, status, xhr) { …
Run Code Online (Sandbox Code Playgroud)

javascript authentication ajax sharepoint cors

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

SQL Server中用于寻址表的正确语法是什么?

这似乎是一个相当明显的问题,但我还没有想到我想要问的正确用语,所以提出这方面的参考资料一直很棘手.但答案显而易见.

当检查SQL Server的Pluralsight的培训材料,他们建议总是提到两个"正规"的查询表(你可以写一个基本的web服务)和SQL查询中也许是一个存储过程,如下所示:

[databasename].[dbo].[some_table].[sometimesacolumngoeshere]
Run Code Online (Sandbox Code Playgroud)

虽然我发现遇到存储过程等非常常见,但它只是使用:

my_column    or    [my_column]
Run Code Online (Sandbox Code Playgroud)

这里的区别显然是一个明确提供绝对"地址",而另一个是隐含的.

你怎么知道何时使用一个而不是另一个,你也称之为解决这个问题?

我的偏好是永远是明确的,如果你需要节省空间和/或使事情更清楚,你可以使用一个明确的完整"地址"别名,对吗?

sql sql-server stored-procedures

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

如何处理 React History.Push() 导致不需要的组件重新安装?

问题

history.push()在组件内部调用似乎会导致整个 react 组件卸载和重新安装;导致无意义的远程服务调用。

具体来说,我有一个在组件进入时触发的远程服务调用。我不希望重新挂载组件,也不希望重新运行服务调用(速度很慢)。

似乎无论如何history.push(location.pathname + '?' + encodeURI(urlSearchParams.toString()));都会导致卸载。我使用它不正确吗?是否有更好的方法来跟踪用户过滤器更改的历史记录而不必担心无关的服务调用?

意图

我正在利用history.push()查询参数的更改来更新浏览器历史记录。查询参数控制表数据的过滤,例如?sort=asc&isCompleted=true等。

当用户更改他们的过滤设置时,我打算简单地过滤存储在 state 中的现有表数据,而不是远程重新加载数据并迫使用户坐等。我还希望用户能够与包含适当过滤器的其他用户共享 URL。

我试过的

  • 尝试完全删除 history.push(),仅使用状态。这有效,但意味着它不可能有一个可共享的 URL,其中过滤器附加为查询参数。
  • 尝试修改 useEffect() 和 useRef() 但对不断重新安装感到沮丧。

组件代码

import React, { useEffect, useState } from 'react';
import { useLocation, useHistory } from 'react-router-dom';

function useQuery() {
  return new URLSearchParams(useLocation().search);
}

export const WidgetTable = () => {
  let urlSearchParams = useQuery();
  let history = useHistory();
  let location = useLocation();

  const [originalTableData, …
Run Code Online (Sandbox Code Playgroud)

javascript typescript reactjs react-router

5
推荐指数
2
解决办法
2881
查看次数

难以构建XML-RPC.NET客户端(与Moodle一起使用)

我正在使用CookComputing XML-RPC库来构建C#控制台客户端,以便在Moodle(一个开源学习管理系统)上执行API方法.服务器正在使用ZEND XML-RPC.

当我运行代码时,我得到一个TypeLoadException是Unhandled,引用这一行:

System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);
Run Code Online (Sandbox Code Playgroud)

"重写成员时违反了继承安全规则:'CookComputing.XmlRpc.XmlRpcFaultException.GetObjectData(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)'.重写方法的安全性可访问性必须与方法的安全性可访问性相匹配被覆盖."

我的客户端代码是:

...
using CookComputing.XmlRpc;


[XmlRpcUrl("http://moodle.ourcompany.com/webservice/xmlrpc/server.php?wstoken=somereallylongtokenstring")]
public interface IMoodleUserGetUsersById : IXmlRpcProxy
{
    [XmlRpcMethod("moodle_user_get_users_by_id")]
    System.Object moodle_user_get_user_by_id(int[] userIds);
}

namespace Moodle_test_api1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Testing XML-RPC Services for Moodle!");

            IMoodleUserGetUsersById proxy = XmlRpcProxyGen.Create<IMoodleUserGetUsersById>();

        int[] myUserIds = {11, 12};
        System.Object myResults = proxy.moodle_user_get_user_by_id(myUserIds);

        //Console.WriteLine("Trying Function: {0}:{1}", proxy.ToString());
    }
  }
Run Code Online (Sandbox Code Playgroud)

}

我想要使​​用的方法的API文档是:

moodle_user_get_users_by_id: Get users by id.


Arguments
---------
userids (Required)

General structure

list of ( 
int   //user ID …
Run Code Online (Sandbox Code Playgroud)

c# client moodle xml-rpc

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

为什么<Object,Object>上的Assert.AreEqual失败?类型不匹配?

我正在尝试Assert.AreEqual在测试中使用我们的提供商验证DTO.

断言失败的是:

预计: DTO.EmployeeDTO

实际: DataProviders.Mappers.EmployeeMapper

我可以用我们的DTO和/或映射器来完成AreEqual工作吗?我应该覆盖EqualsDTO并使用Assert.Equal吗?

这是我们预期的员工DTO进行比较:

EmployeeDTO expected = new EmployeeDTO
{
    Category = "OPS", 
    Code = "EMPL",
    Email = "bill.gates@microsoft.com",
    JobDescription = "Philanthropist",
    FirstName = "Bill",
    Bolander = "Gates",
    ResourceID = 1234567,
    ResourceNumber = "ABCD1234567",
    UserGUID = Guid.Parse("0A76A348-B709-9EF0-9E44-419433E7C90D"),
    UserName = "billygates"
};
Run Code Online (Sandbox Code Playgroud)

这是来自数据提供者的调用,它应该返回一个EmployeeDTO我们可以与预期的DTO进行比较的函数.

 EmployeeDTO actual = controller.GetEmployee("billygates");
Run Code Online (Sandbox Code Playgroud)

这是GetEmployee应该返回员工DTO 的提供者方法:

public EmployeeDTO GetEmployee(string userName)
{
    EmployeeDTO toReturn = null;

    //Get employee   
    toReturn = (from employees in …
Run Code Online (Sandbox Code Playgroud)

.net c# unit-testing assert mstest

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

测试从ASP.NET MVC应用程序返回的HTTP标头

出于安全原因,我使用MVC应用程序中的两个经典策略添加和删除了多个标头:

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
    HttpContext.Current.Response.Headers.Remove("Server");
    HttpContext.Current.Response.Headers.Remove("X-AspNetMvc-Version");
}
Run Code Online (Sandbox Code Playgroud)

并通过Web.Config:

<customHeaders>
    <remove name="X-Powered-By" />
    <add name="X-Frame-Options" value="DENY" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)

现在我正在使用NUnit配合RhinoMocks进行测试,FWIW.

考虑到与嘲讽的困难HttpContext,这将是确保自定义标题是存在或不存在任何的我回到了意见HTTP响应的好方法?

asp.net-mvc nunit unit-testing rhino-mocks

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

如何在where子句中使用LINQ Except()

我无法理解如何正确使用Except().我想在where子句中使用Except()来排除与字符串列表匹配的结果.我编写了下面的小例子来说明.

另外,在这种情况下使用Except是最快的方法吗?如果不是,那会更快?

我有这个:

var result = (from FunTable in Context.t_FunTable

              where FunTable.ft_FunStartDate >= startDate
              && FunTable.ft_FunEndDate <= endDate

       ---->  && FunTable.ft_FunStage != notAllowedStage1 
       ---->  && FunTabble.ft_FunStage != notAllowedStage2

              select FunTable.ActivityName).ToList<String>();
Run Code Online (Sandbox Code Playgroud)

我想这样做:

var result = (from FunTable in Context.t_FunTable

              where FunTable.ft_FunStartDate >= startDate
              && FunTable.ft_FunEndDate <= endDate

      ---->   && FunTable.ft_FunStage.Except(ListOfNotAllowedStages)

              select FunTable.ActivityName).ToList<String>();
Run Code Online (Sandbox Code Playgroud)

c# linq where

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