我在fiddler2中有一行看起来像这样:
ICON # status protocol host url
XXX 3 200 HTTP www.myserver.com /images/save.png
Run Code Online (Sandbox Code Playgroud)
显示的图标是一个禁止的图标,如下所示:
实际上我正在分析我们的一个客户内部网中的加载问题.
谁能告诉我这个图标代表什么?
我使用Visual Studio SSDT BI加载项为SQL Server Reporting Services创建报表.我创建的项目配置为针对SQL Server版本2008/2012/2014,因为这些是我们客户的目标SQL Server.
但是,在Visual Studio中创建的报表文件似乎都是针对SQL Server 2016.如果我将rdl
文件复制到另一台服务器并通过浏览器上传,我被告知它们来自较新版本的SSRS而不能上传.
问题是双重的:
该<Report>
标记包含一个新的2016命名空间,该命名空间取代了以前版本中存在的2010命名空间:
<Report
xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"
xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition"
xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition">
Run Code Online (Sandbox Code Playgroud)新文件格式包括在2016命名空间中定义的参数布局部分,但不包括在2010命名空间中:
<ReportParametersLayout>
.
.
.
</ReportParametersLayout>
Run Code Online (Sandbox Code Playgroud)如果我将命名空间更改回2010
并删除该ReportParametersLayout
部分,则报告在SQL 2012中运行正常,但Visual Studio将在下次打开报告时将其恢复.
(有趣的是,如果我直接从VS部署报告,我会收到警告,指出参数布局在2012年不受支持并被删除,这意味着Visual Studio正在修复报告定义.)
有没有办法强制VS将报告文件保留为以前的版本格式?
我正在尝试遍历各种项目中分散的COM互操作定义的混乱,并将它们收集到一个已知良好的位置,整个开发团队可以从中受益.这项工作的一部分涉及清理多年来积累的定义.
其中一些是从其他源代码借来的,有些是从pinvoke.net逐字复制的,有些看起来是直接从SDK头文件中翻译过来的.我注意到的一件事是关于何时使用各种编组属性没有一致性(即使在pinvoke.net示例中,这也非常棒).部分问题是,我不认为这里的任何人(包括我自己)完全理解何时需要各种属性,或者他们实际做了什么.到目前为止,获得这些权利似乎是猜测和随机变化的结合,直到COMExceptions停止发生,但我更倾向于翻译是正确的,因为有人实际上看了他们并宣布他们如此.
所以,我开始[In]
和[Out]
.我知道这两个属性在概念上是什么:它们告诉编组人员数据必须走向哪个方向.例如,我假设 marshaller不会打扰将[In]
数据复制回调用者,或者知道[Out]
可能需要在被调用者端释放数据,等等.我不知道的事情是:
[In]
是坏的,但是标记输入参数[In, Out]
实际上会破坏任何东西?因此,给定一个假设的COM接口方法,其IDL如下所示:
HRESULT Foo(
[in] ULONG a,
[out] ULONG * b
[in, out] ULONG * c);
Run Code Online (Sandbox Code Playgroud)
我可能会将此翻译为以下任何一种:
void Foo(
uint cb,
out uint b,
ref uint c);
void Foo(
uint cb,
[Out] out uint b,
[In, Out] ref uint c);
void Foo(
[In] uint cb,
[Out] out uint b,
[In, Out] ref uint c); …
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的Web API 4控制器,而不是一些遗留数据库代码.像这样的实体:
public class Employee
{
public string EmploymentStatus { get; set; }
public string CompanyCode { get; set; }
public string Division { get; set; }
public string OrgLevel1Code { get; set; }
public string OrgLevel2Code { get; set; }
public string OrgLevel3 { get; set; }
public string StoreName { get; set; }
public string EmployeeNumber { get; set; }
public string EmployeeFirstName { get; set; }
public string EmployeeMiddleInitial { get; set; }
public string EmployeeLastName …
Run Code Online (Sandbox Code Playgroud) 我真的在努力管理基于Visual Studio 2010数据库项目的SQL Azure数据库的最佳方法.我认为使用VSDBCMD创建用于升级的差异脚本然后只需在SSMS中针对SQL Azure运行就足够了.但是,我得到了可怕的"无法确定目标数据库架构提供程序.部署无法继续." 错误.
在这一点上,我只是假设SQL Azure不支持VSDBCMD中的某些内容,反之亦然,我正在考虑其他方法.这是我正在考虑的方法:
好坏?还有其他想法吗?
编辑:我今天更新到Visual Studio 2010 SP1,发现Microsoft.Data.Schema.Sql.dll中有一个新的数据库架构提供程序:SqlAzureDatabaseSchemaProvider.但是,我无法确定如何真正使用这个坏男孩.现在,当我针对Azure数据库尝试相同的VSDBCMD脚本时,我得到:
源数据库架构提供程序Sql100DatabaseSchemaProvider无法转换为提供程序SqlAzureDatabaseSchemaProvider.部署无法继续.
我也尝试使用具有相同结果的Sql90提供程序.我甚至手动编辑了dbproj文件,并将DSP属性更改为SqlAzureDatabaseSchemaProvider.当我重新加载项目时,我得到:
数据库模式提供程序必须提供DataGenerationServices的实现.
有人试过VS 2010 SP1吗?
database-project azure visual-studio-2010 azure-sql-database
我最近在Eric Lippert的一篇非常棒的博客上重新阅读了一些旧帖子,并发现了这个小故事:
C#的相当一部分关键字以两种或多种方式使用:fixed,into,partial,out,in,new,delegate,where,using,class,struct,true,false,base,this,event,return和无效都有至少两种不同的含义.
为了好玩,我的同事和我自己进行了测验,除了其中一个关键字之外,我能够提供至少两种用途.困扰我的那个是event
.
显然,event
在声明委托类型的成员字段时使用将其转换为事件(例如,仅公开添加/删除操作符).事件的另一个含义是什么?
编辑(答案):
感谢@Hans Passant,我从C#规范中挖出了这一点,它解释了事件的其他用法 - 作为事件属性的(默认)属性目标说明符(来自第17.2节):
在省略事件访问器的事件声明上指定的属性可以应用于正在声明的事件,关联字段(如果事件不是抽象),或者应用于关联的添加和删除方法.在缺少attribute-target-specifier的情况下,该属性适用于该事件.所述的存在
event
属性目标说明符指示该属性适用于该事件; 所述的存在field
属性目标说明符指示该属性适用于该字段; 并且method
attribute-target-specifier的存在表明该属性适用于方法.
在调试使用Semaphores进行跨进程同步的应用程序时,我偶然发现了使用PowerShell取代"其他"进程的想法.在PowerShell中做这样的事情很好:
// In C# application:
var sem = new Semaphore(0, 1, "CrossProcSem");
sem.WaitOne();
# In PowerShell session:
[1] C:\Projects $ $sem = New-Object System.Threading.Semaphore(0, 1, "CrossProcSem")
[2] C:\Projects $ $sem.Release()
Run Code Online (Sandbox Code Playgroud)
我可以打电话WaitOne()
和Release()
基于信号的同一实例多次,经常因为我需要.
但是当我尝试使用Mutex做同样的事情时,PowerShell一直声称该互斥体被放弃了:
[1] C:\Projects $ $mtx = New-Object System.Threading.Mutex($false, "CrossProcMtx")
[2] C:\Projects $ $mtx.WaitOne()
True
[3] C:\Projects $ $mtx.ReleaseMutex()
[4] C:\Projects $ $mtx.WaitOne()
Exception calling "WaitOne" with "0" argument(s): "The wait completed due to an abandoned mutex."
At line:1 char:13
+ $mtx.WaitOne <<<< ()
+ CategoryInfo …
Run Code Online (Sandbox Code Playgroud) 我需要监视在远程Web服务器上运行的网站的http请求和响应.Web服务器进行大量Web服务调用并希望跟踪它们.
如果网站在本地运行,Fiddler会跟踪每个Web服务调用请求并向我提供报告.有人可以请帮助我如何做到这一点
*例如
如果Web应用程序在本地运行并调用两个Web服务,则fiddler将显示统计信息的总时间.但是,如果Web应用程序在托管在内部托管的不同Web服务器(Intranet)上的Web服务器上运行,并且我在我的计算机上运行fiddler,则不会获取每个Web服务调用的统计信息.我只能看到aspx页面的总时间.*
所以问题是如何(如果可能的话)我可以跟踪由在不同机器上运行的web应用程序调用的每个Web服务的统计信息,并且fiddler正在我的机器上运行.
谢谢.
我有一堆COM对象都实现了相同的接口,并且需要在运行时从选项列表中创建其中一个.由于我知道每个实现COM服务器的CLSID,因此这应该很容易.但是,对于某个COM库的子集,如果我在VS2010 IDE中运行,我只能做这个工作.
这是我用来测试的整个程序:
using System;
namespace ComTest
{
class Program
{
static void Main(string[] args)
{
var clsid = "{E8978DA6-047F-4E3D-9C78-CDBE46041603}";
var type = Type.GetTypeFromCLSID(new Guid(clsid));
var obj = Activator.CreateInstance(type, true);
Console.WriteLine("Obj is {0}", obj);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以为我迄今为止尝试的每个COM CLSID做这个工作,只要我通过VS2010.无论是否附加了调试器,无论是否附加了托管进程,我都会System.__ComObject
回来CreateInstance
.
当我从控制台窗口编译并运行此代码时,对于某些CLSID值,我得到:
Unhandled Exception: System.Runtime.InteropServices.COMException: Creating an instance of the COM component with CLSID {E8978DA6-047F-4E3D-9C78-CDBE46041603} from the IClassFactory failed due to the following error: 80004005.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) …
Run Code Online (Sandbox Code Playgroud) 为什么我的本地Fiddler应用程序为Composer"Request Body"显示红色背景?
这是我正在使用的文字:{'count':'2','since_id':'14927799'}
这看起来像一个标准的js对象,作为服务调用的参数传递.
当我粘贴上面使用的文本时,为什么Fiddler会以红色背景显示"Request Body".我猜Fiddler说请求正文无效.如果是的话那我在这里错过了什么?我习惯通过jQuery直接调用服务.....