我使用Windows身份验证的ASP.NET Core(基于.NET Framework).重点是,我需要在该用户上添加角色声明,并且此角色存储在远程数据库中.
我已经阅读了很多关于OWIN/Cookie/UserManager/UserStore/Identity等的内容,以至于我迷失了.
问题:如何以最简单的方式为整个应用程序的当前用户登录(窗口)添加角色声明?
我需要的是轻松使用[Authorize(Role= "MyAddedRole")]或bool res = User.IsInRole("MyAddedRole")
谢谢
我正在开发一个技术库类,可以在两种类型的框架上使用(紧凑型或非紧凑型).
开发此类库的最佳方法是什么?默认情况下使用.NET功能(对于XP Embedded)并在使用Windows CE(使用CF.NET)时进行限制?
谢谢.
我想两个如何在两个(或更多)项目之间共享资源文件?
所以,要恢复,我有三个项目:
包含资源文件的开发项目(CF.NET)(包含所有定义).
我还有两个空的项目但是链接到开发项目,每次只是一个不同的构建,所以当我修改开发项目时,所有三个项目也都会更新.(修改csproj文件.)
问题是,资源文件怎么样?当我尝试从开发项目访问时,我获得了所有资源,但是当我从另外2个人那里尝试时,它会抛出"MissingManifestResourceException".
不知道如何解决这个问题?
谢谢.
[编辑]
这就是我所做的:
创建一个名为"RealProject"的项目,其中包含所有代码(包括资源文件)创建一个名为"LinkedProject"的项目,其中不包含任何内容(我删除了所有文件并修改csproj文件,如下所示:
<ItemGroup>
<Compile Include="..\RealProject\**\*.cs" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
所以在LinkedProject目录中我只有:
整个LinkedProject使用RealProject文件,它只是一个不同的配置构建(请参阅此处了解原因:C# - .NET和CF.NET的代码编译器)
进入该配置后,我无法访问RealProject中的资源文件...
如果您需要屏幕或更详细的解释,请询问.
[编辑]
有了这个代码,它的工作原理,资源管理器没有加载好的程序集名称,但它应该存在更好的解决方案!
Assembly ass = Assembly.ReflectionOnlyLoadFrom(@"..\..\..\RealProject\bin\Debug\RealProject.dll");
ResourceManager manager = new ResourceManager("RealProject.Properties.Resources", ass);
Run Code Online (Sandbox Code Playgroud)
[解]
要检查的事项:
测试!
我正在Windows CE平台上开发应用程序,此应用程序需要连接到远程数据库(Sybase ASE).此远程数据库位于内部网络上.
我怎样才能做到这一点?
似乎ODBC没有嵌入Compact Framework中......
我找到的唯一解决方案是开发一个UNIX应用程序,它执行我的SQL代码并将其发送回我的C#应用程序(使用Socket ...).
好主意?
谢谢 !
我的问题非常简单,我有一个字节数组(通过套接字完成),我想将它转换为XmlTextReader对象.我怎样才能做到这一点?
这不起作用:
byte[] buffer = new byte[5000]; // TODO a revoir
int sizeReceived;
sizeReceived = _socket.Receive(buffer);
string s = Encoding.UTF8.GetString(buffer, 0, sizeReceived); // s is correctly fulfilled with XML a get back
MemoryStream memory = new MemoryStream(buffer);
memory.Position = 0;
return new XmlTextReader(memory);
Run Code Online (Sandbox Code Playgroud)
感谢帮助.
我有一个在CF.NET和.NET下运行的库,但两者之间的序列化不同.因此,在.NET下生成的XML文件在.NET下是不可读的,这对我来说是个大问题!
这里是代码示例:
[Serializable, XmlRoot("config")]
public sealed class RemoteHost : IEquatable<RemoteHost>
{
// ...
}
public class Program
{
public static void Main()
{
RemoteHost host = new RemoteHost("A");
List<RemoteHost> hosts = new List<RemoteHost>();
hosts.Add(host);
XmlSerializer ser = new XmlSerializer(typeof(List<RemoteHost>));
ser.Serialize(Console.Out, hosts);
}
}
Run Code Online (Sandbox Code Playgroud)
CF.NET xml:
<?xml version="1.0"?>
<ArrayOfConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<config Name="A">
</config>
</ArrayOfConfig>
Run Code Online (Sandbox Code Playgroud)
.NET xml
<?xml version="1.0" encoding="ibm850"?>
<ArrayOfRemoteHost xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<RemoteHost Name="A">
</RemoteHost>
</ArrayOfRemoteHost>
Run Code Online (Sandbox Code Playgroud)
如何修改程序以生成相同的XML?
我最近在我的计算机上安装Win10后重新安装了Xamarin.
一如既往,安装Xamarin并启动基本的Xamarin.Forms应用程序将无法正常工作,您需要遇到一些麻烦,这是我的:
找不到与给定名称匹配的资源:attr'windowNoTitle'.
找不到与给定名称匹配的资源:attr'colorPrimary'.
找不到与给定名称匹配的资源:attr'windowActionBar'.
检索项目的父项时出错:找不到与给定名称"Theme.AppCompat.Light.DarkActionBar"匹配的资源.找不到与给定名称匹配的资源:attr'colorPrimaryDark'.
找不到与给定名称匹配的资源:attr'colorAccent'.
找不到与给定名称匹配的资源:attr'colorAccent'.
找不到与给定名称匹配的资源:attr'windowActionModeOverlay'.检索项目的父项时出错:找不到与给定名称"Theme.AppCompat.Light.Dialog"匹配的资源.
我已经阅读了几个主题,说你需要将min SDK版本更改为:
<uses-sdk android:targetSdkVersion="23" android:minSdkVersion="23" />
并在Android SDK Manager中更新所有数据包(也是如此).
但我仍然得到错误.
任何暗示要改变什么以使我的基本应用程序工作?
EDIT styles.xml存在,看起来像:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MainTheme" parent="MainTheme.Base">
</style>
<!-- Base theme applied no matter what API -->
<style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">
<!--If you are using revision 22.1 please use just windowNoTitle. Without android:-->
<item name="windowNoTitle">true</item>
<!--We will be using the toolbar so no need to show ActionBar-->
<item name="windowActionBar">false</item>
[...]
Run Code Online (Sandbox Code Playgroud) 我要做的是在进入$.ajax({success});方法之前自动启动一个函数.我是这样的:
$("body").ajaxSuccess(
function(event, XMLHttpRequest, ajaxOptions) {
alert("ajaxSuccess");
}
);
Run Code Online (Sandbox Code Playgroud)
并且:
$.ajax({
url: ".",
success: function() {
alert("success");
}
);
Run Code Online (Sandbox Code Playgroud)
我的问题是,我首先看到"成功",然后是"ajaxSuccess",或者反过来.可能吗?还有其他方法吗?
$ .ajaxError()的问题是一样的......
谢谢
我有一个需要使用.NET和Compact .NET Framework编译的项目.
CF.NET Framework中没有一些功能,所以我自己创建了它(创建了与.NET Framework中具有完全相同名称和选项的类.如果我使用类似[CF35]的属性来解析这些类,则可以解析项目和:
?
感谢所有建设性的答案.
[编辑]
我知道解决方案包括创建两个引用相同文件的项目.问题是,你应该每次都手动编译.此外,当你向一个文件中添加一个文件时,你需要打开第二个文件并引用它,它只是无聊而且根据我们很多人来处理同一个项目,我想自动完成这个部分.
似乎可能吗?
[编辑2] 除了......资源文件外,一切正常!
所以,要恢复,我有三个项目:
如上所述,一切正常,但现在我的问题是使用资源文件.
申请使用它的方法是什么?
任何的想法?
我目前正在审查一个C#应用程序,我在其中看到:
public static bool ServiceExists(string servicename)
{
ServiceController[] services = ServiceController.GetServices();
foreach (ServiceController s in services)
{
if (s.ServiceName == servicename)
{
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
在这个答案中,Henk表示不使用Dispose()(或using)不会产生内存泄漏,无论是真是假?
我可以保留以前的代码吗或者我应该写一些像:
public static bool ServiceExists(string servicename)
{
ServiceController[] services = ServiceController.GetServices();
bool exists = false;
foreach (ServiceController s in services)
{
using(s)
{
if (s.ServiceName == servicename)
{
exists = true;
}
}
}
return exists;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,不使用Dispose()(或using)有什么风险?
c# ×9
.net ×2
asp.net-core ×1
codedom ×1
idisposable ×1
jquery ×1
memory-leaks ×1
resources ×1
xamarin ×1
xml ×1