我的应用程序使用ASP.NET Web API的自托管功能.我使用的NuGet包名是Microsoft.AspNet.WebApi.SelfHost.我使用以下示例作为基础.
以下代码适用于在ipv4 localhost端点上启动主机:
WebApp.Start<Startup>("http://127.0.0.1:43666");
Run Code Online (Sandbox Code Playgroud)
如果我想指定ipv6地址,我该怎么办?"http:// [:: 1]:43666"不起作用.抛出的异常是[重新格式化]:
System.Net.HttpListenerException: The network location cannot be reached. For information
..about network troubleshooting, see Windows Help
at System.Net.HttpListener.AddAllPrefixes()
at System.Net.HttpListener.Start()
at Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(HttpListener listener,
..Func`2 appFunc, IList`1 addresses, IDictionary`2 capabilities, Func`2 loggerFactory)
at Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(Func`2 app,
..IDictionary`2 properties)
Run Code Online (Sandbox Code Playgroud)
通过检查反射器中的代码来判断,该HttpAddUrlToUrlGroup
函数返回错误代码1232
如果我需要用现有对象初始化对象的基础,我该怎么办?例如,在这种情况下:
public class A
{
public string field1;
public string field2;
}
public class B : A
{
public string field3;
public void Assign(A source)
{
this.base = source; // <-- will not work, what can I do here?
}
}
Run Code Online (Sandbox Code Playgroud)
Assign()方法显然可以逐字段地为基类赋值,但是没有更好的解决方案吗?由于B类继承自A,因此必须有一种方法可以将A分配给B.base
在C++中,这将是一件微不足道的事情,但我似乎无法掌握如何在.NET中执行此操作
LogonUser是否有任何替代方案以及模拟给定帐户以访问网络资源?我正在寻找模仿的方法,这将让我连接到外国域(或同一事件的工作组机器)的机器.
对于初始数据,我有:机器名,用户名(或域\用户名),明文密码.
我知道有一种方法可以使用WNetAddConnection与\\ machinename\ipc $建立连接,然后大多数网络功能将在该帐户的上下文中运行,但win2008添加了另一个扭曲,一些功能仍然使用该帐户,该线程在.
我也知道,有一些方法可以使用SSPI获取模拟令牌.有没有人尝试过这些令牌,它们是否适合访问共享,SCM,远程注册表和东西?是WNetAddConnection使用的是什么?
编辑:澄清,我不能使用LogonUser的原因是因为我需要在不受信任的域或工作组中模拟用户
EDIT2:另一个澄清:我试图实现的项目类似于psexec,例如:
编辑3:我真的很想听听有关SSPI InitializeSecurityContext/AcquireCredentialsHandle选项的更多信息.是否有人广泛使用此API?是否可以使用通过模拟返回的令牌,以便线程可以访问网络共享和复制文件等?有人可以发布一个有效的代码片段吗?
EDIT4:感谢Marsh Ray,问题得到了解决.如果有人希望看到概念验证代码,它就在这里
我正在调试一个Web应用程序,它在页面加载时重定向了几次.页面A重定向到页面B,重定向到页面C.我不知道使用了什么方法(例如JavaScript,HTTP重定向等).
我正在寻找的是一个在页面被重定向之前打破的调试器,这样我就可以准确地检查用于重定向的方法,以及在重定向链中发送到下一页的数据.
有一个简单的方法吗?我在Windows上进行调试,因此Chrome,Firefox和IE都可用.
更新:似乎Fiddler是最好的选择.我将@cgatian的答案标记为解决方案,因为他是Fiddler的想法.
我正在尝试让WCF服务器和客户端使用BasicHttpBinding在传输级别上使用SSL证书相互进行身份验证.以下是创建服务器的方式:
var soapBinding = new BasicHttpBinding() { Namespace = "http://test.com" };
soapBinding.Security.Mode = BasicHttpSecurityMode.Transport;
soapBinding.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Certificate;
var sh = new ServiceHost(typeof(Service1), uri);
sh.AddServiceEndpoint(typeof(IService1), soapBinding, "");
sh.Credentials.ServiceCertificate.SetCertificate(
StoreLocation.LocalMachine, StoreName.My,
X509FindType.FindBySubjectName, "localhost");
sh.Open();
Run Code Online (Sandbox Code Playgroud)
这是客户:
var binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
var service = new ServiceReference2.Service1Client(binding,
new EndpointAddress("https://localhost:801/Service1"));
service.ClientCredentials.ClientCertificate.SetCertificate(
StoreLocation.LocalMachine, StoreName.My,
X509FindType.FindBySubjectName, "localhost");
service.ClientCredentials.ServiceCertificate.Authentication.
CertificateValidationMode =
System.ServiceModel.Security.X509CertificateValidationMode.PeerTrust;
service.HelloWorld();
Run Code Online (Sandbox Code Playgroud)
localhost的证书位于Personal,Trusted Root和Trusted 3rd Party容器中.Internet Explorer可以连接到主机并查看WSDL.此外,SSL调用与ClientCredentialType = HttpClientCredentialType.None一起正常工作
HelloWorld()失败:
System.ServiceModel.Security.MessageSecurityException occurred<br/>
Message="The HTTP request was forbidden with client authentication
scheme 'Anonymous'."
Run Code Online (Sandbox Code Playgroud)
这是一个重新抛出的异常:"远程服务器返回错误:(403)Forbidden."
如何解决wtf正在进行?
我正在处理记录到自定义事件日志的应用程序.应用程序最近已重新命名,事件日志的名称已更改(从"CompanyA Events"更改为"CompanyB Events").事件日志源("Subsystem1","Subsystem2"等)的名称未更改.应用程序安装程序从注册表中删除旧日志条目并写入新日志条目.
我注意到,在某些环境中(2008 R2上发生了很多),日志记录停止,并且没有写入任何事件.有时事件实际上写入OLD evtx文件,该文件本应被删除.以下修复了问题:
由于访问被拒绝,使用SCM无法实现后期操作,即使我是管理员.然而,杀死进程工作,我凸轮启动"Windows事件日志"服务,之后事件日志记录正常工作.
问题:如何在不杀死进程或重新启动计算机的情况下重新初始化事件日志服务?是否存在某种记录或未记录的调用,我可以使用它来指示事件日志服务应该重新读取其配置?
我从一个正在运行的容器中创建了一个图像,该容器当时有一个映射的卷,例如:-v /home/user/myproject/xyz:/opt/xyz
.现在,当我运行该图像时,例如:docker run -i -t myimage bash
,/ opt/xyz中有一个挂载.其中没有任何文件,但我无法删除或卸载该文件夹.
任何人都知道如何摆脱这种约束力?
更新:我找到的一个方法是启动容器,导出它,然后将其作为新图像导回
伙计们,这不可能是真实的
我正在尝试从网络驱动器运行.NET 2.0可执行文件,事实证明,由于Microsoft .net 2.0在服务器2003上没有安装mscorcfg.msc,为了获得一个我必须安装完整的SDK.我只是想在不下载350Mb废话的情况下运行dang的东西!
抱歉咆哮......任何人都可以想到一个简单的解决方案?
编辑1:似乎有一个误解,我想要实现什么.这适用于我的测试环境.我有很多虚拟机,我想要的只是完全禁用dang安全性.这项任务似乎是如此微不足道,但似乎到目前为止,我必须为每台机器部署SDK或3.5 SP1或其他一些多TB的软件包才能实现它
我有一个应用程序,它将从SQL读取数据并通过WCF发送到客户端应用程序,方式类似于:
SqlDataAdapter da = new SqlDataAdapter( cmd )
DataSet ds = new DataSet();
da.Fill( ds );
return ds;
Run Code Online (Sandbox Code Playgroud)
所有日期/时间都以UTC格式存储在数据库中.我注意到,如果运行应用程序的计算机上的时钟偏差,客户端收到的日期/时间也会有所偏差.似乎在DateTime类型是未指定类型的情况下,WCF将在内部将其表示为本地时间,并且这样发送,因此应用程序和客户端之间的任何时间差异都将导致日期/时间移位.
我可以检索数据集并修复日期/时间字段,但是这里有人会想到一些更好的方法来填充数据集,这样每个DateTime字段都会自动成为da.Fill()上的DateTimeKind.Utc吗?
我正在研究我将用于我的项目的平台.其中一部分是一个非常简单的.NET网站.我想为它获得一个Amazon EC2托管,我确实看到lunux主机的价格比windows低两倍.我也觉得使用Linux我可以从硬件中获得比Windows更多的东西.所以,我的想法是,如果我让我的网站在Mono下工作,我将能够以更便宜的方式托管它.我现在的问题是:
Mono是否足够稳定平台来托管网站?稳定我的意思是:错误,崩溃,安全问题.换句话说,托管生产网站是否足够好?
什么Web服务器适合我的网站?我总是听到"阿帕奇",但它是一个大型的平台,专为重型网而设计.我的模型是 - 一个EC2主机=一个网站.这不是一种矫枉过正吗?还有其他替代品,它们轻便且稳定吗?
有没有在Mono上运行成功网站的例子?他们的设置究竟是什么?