小编How*_*ley的帖子

如何设置一个c#方法范围的变量影响另一个?

这个真让我难过.我和另一位打电话给我的开发商合作,因为他无法相信他所看到的.我们一起调试了调试器,我也看到了它并没有解释.这是场景.他正在编写一个方法,通过自动生成的COM包装器与第三方COM对象进行交互(仅通过添加COM组件作为参考生成.这是他的方法的顶部:

  public bool RefolderDocument(ref IManDocument oDoc)
    {
        string strCustom1 = (string) oDoc.GetAttributeValueByID(imProfileAttributeID.imProfileCustom1);
        string strCustom2 = (string) oDoc.GetAttributeValueByID(imProfileAttributeID.imProfileCustom2);
Run Code Online (Sandbox Code Playgroud)

代码的目的是从"文档"对象(oDoc)获取项目编号和子项目编号.

以下是您逐步完成后会发生的事情.在第一次赋值之后,strCustom1具有期望值"32344"(项目编号),并且strCustom2按预期为空.在第二次赋值之后,strCustom2得到子项目号"0002" - 但是strCustom1已经改为32334 - 一个字符已被更改!?

它让我感到震惊,因为某种老式的c语言堆栈溢出(即使它与COM组件互操作,我也不会在托管应用程序中看到它).我们都感到困惑.为了破解这种奇怪的现象,我尝试将第一个字符串的内容复制到另一个位置,如下所示:

  public bool RefolderDocument(ref IManDocument oDoc)
    {
        string strCustom1 = string.Copy((string)oDoc.GetAttributeValueByID(imProfileAttributeID.imProfileCustom1));
        string strCustom2 = string.Copy((string)oDoc.GetAttributeValueByID(imProfileAttributeID.imProfileCustom2));
Run Code Online (Sandbox Code Playgroud)

结果相同!我们此时正在抓住吸管,并将代码从.NET 4中删除到.NET 3.5(CLR 2),但没有变化.一个可能相关的观点是,这是一项服务,我们将附加到服务流程.构建目标是x86,服务位置肯定在Debug输出构建文件夹中.

这有什么合理的解释吗?我很难过如何继续.

c# debugging clr service

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

如何将TFS源代码控制与Business Intelligence Studio集成?

我正在运行Visual Studio 2010 Ultimate - 它与TFS源代码控制集成.但是,当我运行SQL Server 2008 Business Inteligence Studio时,不提供源代码管理.当我查看工具...选项...源控制...没有插件可用.这是因为BI Studio使用2008 Visual Studio Shell而我只有VS 2010吗?TIA.

ssis etl visual-studio tfs2010 business-intelligence

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

是否有Nuget包为Unity IOC配置WCF应用程序?

有很多帖子显示了如何手动完成 - 顺便说一下,我以前做过 - 但我很惊讶地发现没有Nuget软件包以类似的方式将此功能添加到您的WCF项目中您可以使用Unity.MVC3将Unity添加到MVC3项目中.我搜索了在线Nuget包源目录,但没有得到什么.如果我错过了一些明显的东西,如果你指出我正确的方向,我会很感激.

wcf dependency-injection inversion-of-control unity-container nuget

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

Vista是否在DCOM调用中更严格地检查接口ID?(Stub收到了不好的数据)?

我希望每个人都会赦免这个问题的长度和叙事方式.我决定在我的博客中详细描述这种情况.后来我看到Joel对这个网站的邀请,我想我会把它粘贴在这里,看看有没有人对这种情况有所了解.

我编写并现在支持一个应用程序,该应用程序由一个Visual Basic胖客户端组成DCOM,使用ATL用C++编写的中间层COM +组件.它遍布我们所有的八个办事处.每个办公室都托管一个后端服务器,其中包含COM +应用程序(由18个独立组件组成)和SQLServer.SQLServer通常位于同一个后端服务器上,但不一定是这样.

我们最近将我们最大的办公室 - 纽约的后端服务器从MSC群集迁移到VMWare ESX技术上托管的新虚拟机.由于COM +应用程序的位置已从旧服务器移动到具有不同名称的新服务器,因此我不得不重定向所有客户端,以便它们在新服务器上激活COM +应用程序.这个过程很老套,因为我对几个经过类似基础设施升级的小型办公室做了同样的事情.

一切似乎都很常规,周一早上整个办公室 - 大约1,000个Windows XP工作站 - 在新服务器上运行时没有发生任何事故.但随后电话来自我的移动组 - 有一位律师在家工作,VPN连接在被重定向到新服务器后出现了一个奇怪的错误:

Error on FillTreeView2 - The stub received bad data.

咦?我以前从未见过这个错误信息.是新服务器吗?但办公室的所有工作站都运转正常.我告诉移动组将律师转回旧服务器(仍在运行),错误消失了.那有什么区别?原来这位律师在家里运行Vista.

我们不在任何办公室运行Vista,但我们确实有一些在家里运行Vista的律师(肯定是我在纽约办公室的一些).我也这样做,我从未见过这个问题.为了确认存在问题,我启动了我的Vista笔记本电脑,指向新服务器,并得到了同样的错误.我把它指回旧服务器,它工作正常.显然,Vista和新服务器上的组件存在一些问题 - 这个问题似乎不会影响XP客户端.会是什么呢?

下一站 - 笔记本电脑上的应用程序错误日志.这产生了有关错误的更多信息:

Source:        Microsoft-Windows-RPC-Events
Date:          9/2/2008 11:56:07 AM
Event ID:      10
Level:         Error
Computer:      DevLaptop
Description:   Application has failed to complete a COM call because an incorrect
interface ID was passed as a parameter.

The expected Interface ID was 00000555-0000-0010-8000-00aa006d2ea4, 
The Interface ID returned was 00000556-0000-0010-8000-00aa006d2ea4.

User …

dcom windows-vista

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

使用ASP.NET MVC进行项目组织的最佳实践

我最近下载了Rob Conery出色的ASP.NET Storefront参考应用程序,并发现它非常有启发性.我想到的一个问题是,应该放置Model类(以及它们所依赖的Data类).MVC项目模板创建一个Model文件夹.但在我看来,我会更好地将模型分解为一个单独的项目组件,以便其他潜在的应用程序(例如与网站的应用程序域相关的管理工具)可以重复使用它?

我很想得到别人的意见.

asp.net-mvc

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

从 SQL Management Studio 捕获输出并将其粘贴到 Outlook 电子邮件中的最佳方法是什么?

我经常在 SQL Management Studio 中执行临时查询,并且需要通过电子邮件将结果发送给人们。这种情况一天发生几次,因此我正在寻找将查询结果从结果窗口复制到 Outlook 电子邮件正文中的最佳方法,以便可以以读者友好的方式对其进行格式化。我还没有想出任何对我有用的东西。

如果真的很重要,我最终会进入 Excel,从那里执行查询,然后附加生成的电子表格。如果可能的话,我正在寻找我可以在不涉及 Excel 的情况下做的事情。有任何想法吗?

sql outlook ssms

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

如何在ReSharper中使用using语句包围代码块?

我正在观看Stephen A Bohlen出色的夏季NHibernate系列,并一直在观察他与CodeRush的互动.我最近安装了ReSharper(我是ReSharper新手),我试图找到一些与Stephen一起(切向)使用CodeRush的ReSharper生产力等价物.

作为一个例子,他演示了如何突出显示如下代码块:

ISession session = GetSession();
session.xxx
Run Code Online (Sandbox Code Playgroud)

然后把它变成

using (ISession session = GetSession())
{
   session.xxx
}
Run Code Online (Sandbox Code Playgroud)

他通过使用using语句突出显示要包围的块然后调用一些CodeRush模板来完成此操作.我一直无法弄清楚如何用ReSharper做同样的事情.我找到了ReSharper Surround命令(在Code命令中),但是当你选择using语句时,它确实包围了你突出显示的代码块,但是将第一行放在using子句中似乎不够智能.也就是说,它导致:

using () 
{
  ISession session = GetSession();
  session.xxx
}            
Run Code Online (Sandbox Code Playgroud)

这需要我将第一行移动到using子句中.我错过了一个更简单的方法吗?

resharper refactoring coderush visual-studio-2008 visual-studio

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

将JQGrid与WCF Web服务结合使用

我试图从我的ASP.NET 2.0 WebForms应用程序中运行的WCF Web服务获取JQGrid的数据.问题是WCF Web服务期望将数据格式化为JSON字符串,并且JQGrid正在执行HTTP Post并将其作为Content-Type传递:application/x-www-form-urlencoded.

虽然返回到JQGrid的数据格式似乎有几种选择(它接受JSON,XML等),但似乎没有办法改变它将输入传递给Web服务的方式.

所以我试图找出如何调整WCF服务以便它接受

Content-Type: application/x-www-form-urlencoded
Run Code Online (Sandbox Code Playgroud)

而不是

Content-Type:"application/json; charset=utf-8"
Run Code Online (Sandbox Code Playgroud)

当我使用JQuery进行测试以使用url编码发送Ajax请求时(如下所示):

$.ajax({
    type: "POST",
    url: "../Services/DocLookups.svc/DoWork",
    data: 'FirstName=Howard&LastName=Pinsley',
    contentType: "Content-Type: application/x-www-form-urlencoded",
    dataType: "json",
    success: function(msg) {
        alert(msg.d);
    }
});
Run Code Online (Sandbox Code Playgroud)

呼叫失败.使用Fiddler检查流量,我发现服务器返回的错误:

{"ExceptionDetail":{"HelpLink":null,"InnerException":null,"Message":
"The incoming message has an unexpected message format 'Raw'. The expected
message formats for the operation are 'Xml', 'Json'. This can be because 
a WebContentTypeMapper has not been configured on the binding. 
See the documentation of WebContentTypeMapper for more details."...
Run Code Online (Sandbox Code Playgroud)

请注意,由于编码的不同,此代码可以正常工作

$.ajax({
    type: "POST",
    url: "../Services/DocLookups.svc/DoWork", …
Run Code Online (Sandbox Code Playgroud)

wcf jquery jqgrid

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

在VS2012中发布期间不能再忽略证书错误

我一直在使用Visual Studio的MSDeploy发布服务来发布我的项目.发布URL为https://machinename.domain.com:8172/MsDeploy.axd.它在VS2010中运行良好 - 我能够检查一个忽略证书错误的复选框.VS 2012中不再显示该框.我发现了一个帖子,表明我应该提示是否忽略证书错误 - 但我不是,我不能再发布我的项目了.有任何想法吗?

deployment ssl-certificate msdeploy visual-studio-2012

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

为什么实体框架在生成SQL时忽略了Take()方法?

我在实体框架中使用.Skip和.Take方法.生成SQL时,.Skip调用很受欢迎..Take不是.这段代码:

        public IList<DocPullRun> GetDocRunsPaginated(int startRowIndex, int maximumRows) {

        Logger.Debug("GetDocRunsPaginated: startRowIndex: {0}, maximumRows: {1}", startRowIndex, maximumRows);
        Debug.Assert(startRowIndex >= 0);
        IOrderedQueryable<DocPullRun> sortedPulls = 
            from run in DB.DocPullRuns
                 .Include("DocumentPullDefinition")
                 .Include("DocumentPullDefinition.Case")
                 .Include("DocumentPullDefinition.DocCategory")
                 .Include("DocumentPullDefinition.Repository")
                 .Include("DocumentPullDefinition.Repository.ConcordanceRepository")

             orderby run.PullStarted descending
             select run;

        IQueryable<DocPullRun> query = sortedPulls.Skip(startRowIndex);
        if (maximumRows > 0)
            query.Take(maximumRows);

        return query.ToList();
    }
Run Code Online (Sandbox Code Playgroud)

下面显示的SQL中的结果(请注意,在此调用中,startRowIndex为0,maximumRows为10).Where子句包含WHERE [Project1].[row_number]> 0(这是.Skip部分),但我希望看到一个Select TOP 10,而只是看到一个Select.结果列表包含10个以上的元素.请注意,我运行了SQL Trace,看到SQL确实是延迟的,直到最后一行才真正发送:query.ToList().这是某种类型的错误吗?

    SELECT 
[Project1].[C1] AS [C1], 
[Project1].[Id] AS [Id], 
[Project1].[PullStarted] AS [PullStarted], 
[Project1].[PullEnded] AS [PullEnded], 
[Project1].[MatchedQuery] AS [MatchedQuery], 
[Project1].[NewDocs] AS [NewDocs], 
[Project1].[UpdatedDocs] AS [UpdatedDocs], 
[Project1].[DeletedDocs] …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework

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