我在IIS 7.5上有一个wcf休息服务.当有人访问不存在的端点的一部分时(即http://localhost/rest.svc/DOESNOTEXIST vs http:// localhost/EXISTS),他们会看到一个带有状态代码的Generic WCF灰色和蓝色错误页面404.但是,我想返回如下内容:
<service-response>
<error>The url requested does not exist</error>
</service-response>
Run Code Online (Sandbox Code Playgroud)
我尝试在IIS中配置自定义错误,但它们仅在请求其余服务之外的页面时才起作用(即http:// localhost/DOESNOTEXIST).
有谁知道如何做到这一点?
编辑 在下面的答案后,我能够弄清楚我需要创建一个实现BehaviorExtensionElement的WebHttpExceptionBehaviorElement类.
public class WebHttpExceptionBehaviorElement : BehaviorExtensionElement
{
///
/// Get the type of behavior to attach to the endpoint
///
public override Type BehaviorType
{
get
{
return typeof(WebHttpExceptionBehavior);
}
}
///
/// Create the custom behavior
///
protected override object CreateBehavior()
{
return new WebHttpExceptionBehavior();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我可以通过以下方式在我的web.config文件中引用它:
<extensions>
<behaviorExtensions>
<add name="customError" type="Service.WebHttpExceptionBehaviorElement, Service"/>
</behaviorExtensions>
</extensions>
Run Code Online (Sandbox Code Playgroud)
然后加入 …
我首先使用Microsoft Entity Framework代码来管理我的数据(使用MySQL).我已经定义了一个POCO对象,但是,当我尝试添加数据时,表示用户不存在.我查看了数据库,并创建了表User not Users.我该如何解决这个问题?它让我疯了!
谢谢!
public class User
{
[Key,Required]
public int UserId { get; set; }
[StringLength(20), Required]
public string UserName { get; set; }
[StringLength(30), Required]
public string Password { get; set; }
[StringLength(100), Required]
public string EmailAddress { get; set; }
[Required]
public DateTime CreateDate { get; set; }
[Required]
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 我有一个带有两个OperationContracts的WCF休息服务,如下所示:
[OperationContract]
[WebGet(UriTemplate = "ping/")]
Message PingServer();
[OperationContract]
[WebGet(UriTemplate = "files/")]
Message AddFile(string accessKey);
Run Code Online (Sandbox Code Playgroud)
当我访问http://localhost/rest.svc/ping/它工作正常,如果我访问http://localhost/rest.svc/files/它工作正常.
但是,如果我直接访问http://localhost/rest.svc,则会抛出以下错误:
System.InvalidOperationException:在对WSDL导出扩展的调用中抛出异常:System.ServiceModel.Description.DataContractSerializerOperationBehavior contract:http://tempuri.org/:IRest ----> System.InvalidOperationException:操作'AddFile'无法加载,因为它具有System.ServiceModel.Channels.Message类型的参数或返回类型或具有MessageContractAttribute的类型和不同类型的其他参数.使用System.ServiceModel.Channels.Message或使用MessageContractAttribute类型时,该方法不得使用任何其他类型的参数.
我理解错误,但想知道如何修复/抑制它,以便它显示默认的WCF端点页面.我只是使用WCF进行REST.
谢谢!
Jeffrey Kevin Pry
我正在寻找一种方法来自动在TOAD for Oracle中插入列名,以便更容易编写查询.
理想情况下,我想输入如下内容:
select * from myTable;
Run Code Online (Sandbox Code Playgroud)
然后,当我右键单击*时,我可以选择插入该表的所有已知列名.
我不确定是否存在像我所描述的那样的东西,但任何接近都会有所帮助.
我知道您可以在"模式浏览器"中选择一个表后从"查询查询"菜单项中提取查询,但我想知道是否有更快的方法.
另外,我知道你可以输入:
select d.(SOMETHING) from myTable d;
Run Code Online (Sandbox Code Playgroud)
然后它会弹出(虽然过了一会儿)一列列,但这不允许我插入所有列名.
请不要告诉我使用*或者:)我需要编写多个查询,我只需要某些列名称,并且不希望每次都输入它们.
谢谢!
Jeffrey Kevin Pry
所以,我有一个使用以下层构建的应用程序:
截至目前,我没有使用任何Object的概念从最底层获取数据.我只是使用DataTables来获取数据.我对此不满意,因为它要求业务逻辑层知道列名等.
在我的业务逻辑层中,我有从这些DataTable加载的对象,服务层通过这些对象的集合与这些对象一起工作.
这是我的问题.如果我想让数据抽象层接受并回复对象,我该如何避免从服务层引用DAL?我已经读过对象工厂是一种方式,我也读过我可以构建对象转换函数等等.
你成功使用它的最佳方法是什么?我的最终目标是为不同的数据库服务器供应商提供可插拔的DAL.
我在下面的代码中使用OpenSSL.Net生成OpenSSL RSA公钥和私钥.但是,我似乎找不到使用给定私钥解密数据的方法.我知道如果我调用生成密钥然后相应的方法加密和解密数据它工作正常.但是,如果我尝试从给定公钥的外部源解密某些内容,我该如何使用该密钥进行解密.
注意:请不要给出不使用OpenSSL.NET的示例.Microsoft加密提供程序比OpenSSL慢得多,并且不符合我的速度要求.
谢谢!
public class AsymmetricKeyResult
{
public string PublicKey { get; set; }
public string PrivateKey { get; set; }
public AsymmetricKeyResult(string publicKey, string privateKey)
{
this.PublicKey = publicKey;
this.PrivateKey = privateKey;
}
}
public static AsymmetricKeyResult GenerateAsymmetricKeys(int keyLength)
{
RSA rsa = new RSA();
rsa.GenerateKeys(keyLength, 0x10021, null, null);
AsymmetricKeyResult kResult = new AsymmetricKeyResult(rsa.PublicKeyAsPEM, rsa.PrivateKeyAsPEM);
return kResult;
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一组使用C#的非常小的命令行实用程序.例如,我有一个应用程序只打印PATH变量中指定的配置文件中的一行.
目前我的解决方案下有一个名为utilities的项目.我想知道是否有办法从一个项目生成多个exe文件.我希望这样做,因为将有大约10个不同的实用程序,因为我已经在我的解决方案下有6个项目,我不想让它更混乱.
我希望能够为每个可编译的可执行文件创建一个main函数,并在不同的名称空间中指定它们.
谢谢你的帮助!
是一种更好,更短的方式来执行此代码:
/*Replace all letters by their respective ASCII code - 55*/
as_iban := REPLACE(as_iban, 'A', '10');
as_iban := REPLACE(as_iban, 'B', '11');
as_iban := REPLACE(as_iban, 'C', '12');
as_iban := REPLACE(as_iban, 'D', '13');
as_iban := REPLACE(as_iban, 'E', '14');
as_iban := REPLACE(as_iban, 'F', '15');
as_iban := REPLACE(as_iban, 'G', '16');
as_iban := REPLACE(as_iban, 'H', '17');
as_iban := REPLACE(as_iban, 'I', '18');
as_iban := REPLACE(as_iban, 'J', '19');
as_iban := REPLACE(as_iban, 'K', '20');
as_iban := REPLACE(as_iban, 'L', '21');
as_iban := REPLACE(as_iban, 'M', '22');
as_iban := REPLACE(as_iban, 'N', …Run Code Online (Sandbox Code Playgroud)