假设有
enum SomeEnum { One, Two, Three };
Run Code Online (Sandbox Code Playgroud)
SomeEnum是一个枚举,所以它应该从Enum继承,所以如果我写:
Dictionary<Enum, SomeClass> aDictionary = new Dictionary<SomeEnum, SomeClass>();
Run Code Online (Sandbox Code Playgroud)
编译器抱怨它不能隐式地将SomeEnum转换为Enum?
我尝试使用时遇到了很多问题Microsoft.SqlServer.Types.SqlGeography.我完全知道在Linq to Sql中对此的支持并不是很好.我尝试了很多方法,从预期的方式(数据库类型geography,CLR类型SqlGeography)开始.这产生了NotSupportedException,这通过博客广泛讨论.
然后我走了将geography列视为一个路径varbinary(max),就像geography存储为二进制的UDT一样.这似乎工作正常(使用一些二进制读取和写入扩展方法).
但是,我现在遇到了一个相当模糊的问题,这似乎并没有发生在许多其他人身上.
System.InvalidCastException:无法将类型为"Microsoft.SqlServer.Types.SqlGeography"的对象强制转换为"System.Byte []".
ObjectMaterializer在迭代查询时抛出此错误.它似乎只有在包含地理列的表隐式包含在查询中时(即使用EntityRef<>属性进行连接)才会出现.
System.Data.Linq.SqlClient.ObjectReaderCompiler.ObjectReader`2.MoveNext()
我的问题:如果我正在检索geography列varbinary(max),我可能会发现反向错误:无法转换byte[]为SqlGeography.我明白了.我没有.我对部分LINQ to SQL类有一些隐藏二进制转换的特性......那可能是问题吗?
任何帮助表示赞赏,我知道可能没有足够的信息.
附加功能:
geography在Visual Studio DBML"服务器数据类型" =设计师列geography生成此错误:The specified type 'geography' is not a valid provider type.geography在Visual Studio DBML没有"服务器数据类型"列设计师生成此错误:Could not format node 'Value' for execution as SQL.我有一个像这样结构的纯文本文件:
!ITEM_NAME
Item value
!ANOTHER_ITEM
Its value
...
Run Code Online (Sandbox Code Playgroud)
是否可以使用类似于XSLT的文件:
<?xml version="1.0" encoding="UTF-8" ?>
<document>
<ITEM_NAME>Item value</ITEM_NAME>
<ANOTHER_ITEM>Its value</ANOTHER_ITEM>
...
</document>
Run Code Online (Sandbox Code Playgroud)
编辑
对不起,我之前没有明确说过.我试图使用Visual Studio 2005 XSLT引擎完成此转换.我已经尝试了两种提供的解决方案,我确信这是正确的.但Visual Studio 2005不知道未解析的文本功能.
我需要为wso2安全令牌服务创建一个.NET客户端.
通常我会创建一个简单的控制台或WinForm项目添加一个服务引用.暴露的WSDL将被转换为一组类,我可以使用它们来查询服务并正确管理其响应.
不幸的是,生成的请求和响应类是空的:只是没有任何属性或方法的类声明.这类似于其他(未答复)Stack Overflow问题中描述的行为/sf/ask/1543435631/
我在这个论坛帖子中找到了该服务的示例请求:http://cxf.547215.n5.nabble.com/Sample-STS-Client-tp4643980p4664175.html我使用它来使用SOAP UI.
是否有一种适当的,可能是自动的方式来重新创建查询安全令牌服务所需的复杂数据结构?
编辑
好的,经过多次尝试,我已经将SOAP请求从上面的论坛帖子减少到了仍然从STS服务获得RequestSecurityTokenResponse所需的最小结构.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-6D35592DCDDA26FFF3141578725699577">
<wsse:Username>USERNAME HERE</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD HERE</wsse:Password>
</wsse:UsernameToken>
<wsu:Timestamp wsu:Id="TS-6D35592DCDDA26FFF3141578725699576">
<wsu:Created>2014-11-12T10:14:16.995Z</wsu:Created>
<wsu:Expires>2014-11-12T10:16:16.995Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
<wsa:Action soap:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT</wsa:Action>
<wsa:MessageID soap:mustUnderstand="1">uuid:6d4eab69-77f9-42b7-8d6b-1f710020fb0b</wsa:MessageID>
<wsa:To soap:mustUnderstand="1">STS ENDPOINT ADDRESS HERE</wsa:To>
</soap:Header>
<soap:Body>
<wst:RequestSecurityToken xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust">
<wst:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</wst:RequestType>
<wst:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</wst:TokenType>
<wst:Claims>
<wsid:ClaimType Uri="http://wso2.org/claims/userid" xmlns:wsid="http://schemas.xmlsoap.org/ws/2005/05/identity"/>
</wst:Claims>
</wst:RequestSecurityToken>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
我已经获得了部分成功,在我的项目的app.config中定义了单个wsHttpBinding,如下所示:
<wsHttpBinding>
<binding name="SendUsername" messageEncoding="Text">
<security mode ="TransportWithMessageCredential">
<message clientCredentialType ="UserName"/>
<transport clientCredentialType ="Basic" />
</security>
</binding>
</wsHttpBinding>
Run Code Online (Sandbox Code Playgroud)
添加或不添加如下所示的CustomBinding:
<customBinding>
<binding name="wso2carbon-stsSoap12Binding"> …Run Code Online (Sandbox Code Playgroud) 我有一个tlb文件,其中包含一些我需要使用的函数声明.
如果我使用
#import "type_library.tlb"
Run Code Online (Sandbox Code Playgroud)
我可以从我的代码中引用该函数:
tlb_namespace::required_function();
Run Code Online (Sandbox Code Playgroud)
但是当我编译项目时,链接器说tlb_namespace :: required_function是一个未解析的外部符号.
我怎样才能成功建立这样的项目?
编辑:
我在Dummy VBA访问项目中使用了相同的类型库.我已经添加了对类型库的引用,我注意到类型库中包含的一些函数被正确调用.但其中一些不是.VBA说它无法在相关的dll中找到它们的入口点.
这可以解释构建c ++应用程序时未解析的外部符号吗?
我也注意到失败的函数在tlb中声明如下:
UPPER_function_name
Run Code Online (Sandbox Code Playgroud)
但在dll中声明如下:
Upper_function_name
Run Code Online (Sandbox Code Playgroud)
这可能是问题吗?
是否有可能直接修改二进制tlb文件或DLL来解决这种错误?
c# ×2
.net-2.0 ×1
com ×1
geography ×1
linq-to-sql ×1
soapui ×1
sql-server ×1
sqlgeography ×1
text ×1
vb.net ×1
visual-c++ ×1
wcf ×1
wso2 ×1
wso2is ×1
xml ×1
xslt ×1