可能重复:可
序列化继承
序列化是否可继承?
例:
[Serializable]
class A
{
}
class B : A
{
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试序列化/反序列化B类的实例,我会得到一个异常,说明该类未标记为可序列化.因此问题:序列化是否可继承?我只是错过了如何做,或者每个需要序列化的类是否需要明确标记为这样?
有没有办法在服务端设置tiemout,以便请求在超过超时时停止处理?我知道我可以在客户端计时请求,但这并不会停止在服务器上处理请求.
我尝试添加以下绑定:
<basicHttpBinding>
<binding name="timeout" receiveTimeout="00:01:00" closeTimeout="00:01:00" openTimeout="00:01:00" sendTimeout="00:01:00" />
</basicHttpBinding>
Run Code Online (Sandbox Code Playgroud)
我还尝试在system.web节点中添加以下内容(单独与上面一起):
<httpRuntime executionTimeout="60" /> <!-- timeout after 60 seconds -->
Run Code Online (Sandbox Code Playgroud) 我有一个用户的历史表,我正在尝试查找用户持有特定用户名的日期范围.该表是一个由触发器填充的审计表,因此每次对用户进行更改时都会有条目,而不仅仅是用户名.我可以这样做以获取每一行的日期范围:
CREATE TABLE #LoginHistory
(
LoginHistoryID INT IDENTITY(1,1),
LoginID INT,
Username VARCHAR(32),
StartDate DATETIME
)
INSERT INTO #LoginHistory (LoginID, Username, StartDate) VALUES
(1, 't', '2016-01-01'),
(1, 't', '2016-01-02'),
(1, 't', '2016-01-04'),
(1, 'test', '2016-01-05'),
(2, 't', '2016-01-08'),
(2, 'tom', '2016-01-09'),
(1, 'test', '2016-01-15'),
(1, 't', '2016-02-01')
SELECT
LoginID,
Username,
StartDate,
EndDate = LEAD(StartDate) OVER (PARTITION BY LoginID ORDER BY StartDate ASC)
FROM #LoginHistory
WHERE LoginID = 1
ORDER BY StartDate ASC
DROP TABLE #LoginHistory
Run Code Online (Sandbox Code Playgroud)
输出:
LoginID Username StartDate EndDate
1 …Run Code Online (Sandbox Code Playgroud) 在我的一个对话框中,我有以下控件:
<Control Id="EnvironmentComboBox" Type="ComboBox" Sorted="yes" ComboList="yes" Property="ENVIRONMENT" X="25" Y="110" Width="200" Height="15" />
Run Code Online (Sandbox Code Playgroud)
我在其他地方填写ComboBox如下:
<UI>
<ComboBox Property="ENVIRONMENT">
<ListItem Text="Development" Value="Development" />
<ListItem Text="SIT" Value="SIT" />
<ListItem Text="UAT" Value="UAT" />
<ListItem Text="Production" Value="Production" />
</ComboBox>
</UI>
Run Code Online (Sandbox Code Playgroud)
但是,如果我没有创建ComboBox位,MSI仍将构建,并且在安装期间它将失败(2205).因此,我想强制要求拥有一个名为ENVIRONMENT的属性.我试过在我的对话框中添加如下所示的PropertyRef:
<PropertyRef Id="ENVIRONMENT" />
Run Code Online (Sandbox Code Playgroud)
但是,这似乎没有好转<ComboBox Proeprty="ENVIRONMENT">.它将获取一个常规属性(<Property Id="ENVIRONMENT" Value="test" />),但这并没有多大帮助.
有没有办法要求ComboBox定义?
编辑: 为了澄清,我打算将ComboBox定义与Control定义分开,以便可以重用该对话框.
好吧,我显然错过了一些东西.我正在尝试遵循这一点,以便安装到GAC并提供开发.但是,唯一发生的事情是DLL被放入ProductDirectory.它没有出现在GAC中,也没有添加注册表项.我怎样才能让它发挥作用?
以下是Product.wxs的相关部分.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="Me.Common" Language="1033" Version="1.0.0.0" Manufacturer="Me" UpgradeCode="ea52947a-0980-435d-a8f5-280d3526cb90">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<!-- The feature to install. -->
<Feature Id="ProductFeature" Title="Me.Common" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="ProductDirectory" Name="Me.Common">
<Directory Id="GAC" Name="GAC" />
</Directory>
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents">
<Component Id="RunTime_Me.Common" Directory="GAC" Guid="E2B19C22-DC01-432D-85B0-0E4948F95A43">
<!-- Add to GAC. -->
<File Id="RunTime_Me.Common"
Source="$(var.Me.Common.TargetDir)$(var.Me.Common.TargetFileName)"
Assembly=".net"
KeyPath="yes" />
</Component>
<Component Id="DesignTime_Me.Common" Directory="ProductDirectory" Guid="C1BD8CD1-E834-49D5-B499-D9E313E70669">
<!-- Add locally. --> …Run Code Online (Sandbox Code Playgroud) 我见过很多人说使用iframe或新页面来显示ReportViewer控件.有没有办法在不使用iframe的情况下与我的页面的其余部分一起显示控件?
我对html或css了解不多,但我做了很多;

我想堆叠div,所以它看起来像这样(请原谅糟糕的绘图);

我用谷歌搜索了如何尝试不同的东西,但喜欢/不喜欢的盒子总是最终没有移动或移动到最左边/非常右边.
<div style="float:left;width:300px;height:350px;text-align:center;">
<div style="float:left;width:500px;height:200px;text-align:center;">
<div id="wrapper">
<div style="align=center;">
<div id="first">1</div>
<div id="second">2</div>
Run Code Online (Sandbox Code Playgroud)
这些是我拥有的三个div.第一个有链接[添加/消息等]
第二个有"thelastgecko"和个人资料文本.
而我正在尝试使用最后一个框来表示喜欢/不喜欢,但无论我做什么都行不通.
我的服务层中有两台服务器位于负载均衡器后面.它们都应该是相同的 - IIS设置相同,AppFabric(保持两个服务热身),在服务帐户或应用程序池标识下运行的应用程序池.在一台服务器上,一切正常.在另一台服务器上,我的三个应用程序池(AppFabric正在预热的两个,在服务帐户下,以及一个只是标准应用程序池而没有默认设置更改的应用程序池)几乎在我启动它们时就停止运行(有时是第一次请求).
每次尝试启动其中一个应用程序池时,我在应用程序日志中收到以下五个错误:
在处理配置路径的托管应用程序服务自动启动期间出错:'MACHINE/WEBROOT/APPHOST/Site/App'.返回的错误消息是:''.工作进程将被标记为不健康并将被关闭.数据字段包含错误代码.
引用的错误代码是80070005.
这实际上是针对相同的站点/应用程序,无论应用程序池是否已启动(尽管在重新创建应用程序池后它可能会更改).
在系统日志中,我在错误(Application pool 'AppPool' is being automatically disabled due to a series of failures in the process(es) serving that application pool.)之前收到以下警告五次:
为应用程序池"AppPool"提供服务的进程报告在应用程序预加载或服务加载期间出现故障.进程ID为'2396'.请确保正确配置应用程序池中的所有应用程序预加载或服务设置.数据字段包含错误编号.
引用的错误代码是80004005.
这里的AppPool是正在启动的.
我试过重新创作; 我已经尝试卸载AppFabric(但我们需要它,所以重新安装但仍然没有去).我没有想法.有什么建议?
编辑:我尝试从工作服务器复制applicationHost.config,但这也不起作用..
EDIT2:其中一个应用程序池在真实用户帐户下运行时有效,但在ApplicationPoolIdentity下运行时无法运行....
(另外,我们遇到的问题是网站运行在2.0以下,应用程序运行在4.0以下.这可能解决了那些作为服务帐户运行的问题.)
有没有办法使用反射从开放类型获取属性的值?
class Program
{
static void Main(string[] args)
{
var target = new GenericType<string>();
target.GetMe = "GetThis";
target.DontCare = "Whatever";
var prop = typeof(GenericType<>).GetProperty("GetMe");
var doesntWork = prop.GetValue(target);
}
}
public class GenericType<T>
{
public string GetMe { get; set; }
public T DontCare { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
prop.GetValue(target)抛出以下异常:
无法对 ContainsGenericParameters 为 true 的类型或方法执行后期绑定操作。
我知道我可以这样做target.GetType().GetProperty("GetMe").GetValue(target),但我想知道是否有一种方法可以在不知道类型的情况下获取值。
简单的解决方案是拥有一个仅包含 的非泛型基类GetMe,但我现在无法进行更改。
我有一个使用Message安全性的负载均衡服务:
<wsHttpBinding>
<binding>
<security mode="Message">
<message clientCredentialType="Windows" establishSecurityContext="false" />
</security>
</binding>
</wsHttpBinding>
Run Code Online (Sandbox Code Playgroud)
我对此服务的所有调用都会打开和关闭自己的通道,因此建立安全上下文没有任何好处.
我正在使用WSHttpBinding与服务配置匹配的服务来调用服务:
ws.Security.Mode = SecurityMode.Message;
ws.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
ws.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
ws.Security.Message.EstablishSecurityContext = false;
Run Code Online (Sandbox Code Playgroud)
这有时会起作用,但有时我会遇到诸如此类的错误
安全上下文令牌已过期或无效.邮件未处理.
要么
安全令牌请求包含无效或格式错误的元素.
我终于发现将EstablishSecurityContext设置为false实际上并不会阻止使用安全上下文令牌.我们的负载均衡器目前不使用粘性会话,我试图避免走这条路.
我确实发现我应该能够在客户端上将NegotiateServiceCredential设置为false,以允许没有粘性会话的负载均衡器.我的服务已在AD帐户下运行,我可以在WSDL中看到它:
<Upn>User@Domain</Upn>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将服务标识添加到我的客户端时
EndpointIDentity.CreateUpnIdentity("User@Domain")
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
不支持对在需要Kerberos多重标记的用户帐户下运行的服务进行身份验证.
如何通过负载均衡器调用我的服务?
c# ×2
wcf ×2
wix ×2
asp.net-mvc ×1
combobox ×1
css ×1
gac ×1
generics ×1
html ×1
iis ×1
iis-7 ×1
inheritance ×1
razor ×1
reflection ×1
sql ×1
sql-server ×1
timeout ×1