【发布时间】:2012-03-23 02:09:21
【问题描述】:
我正在尝试将我在网上找到的一些 VB.net 代码转换为一些 C# 代码,但是在我的 C# 代码中的这行代码周围出现以下错误:
DNNServiceSecurityToken token = DataCache.GetCache("DNNServiceSecurityToken_" + TokenId.ToString());
具体错误代码为:
不能隐式转换类型'object' 到“MyTypes.DNNServiceSecurityToken”。 存在显式转换 (你错过了演员吗?)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel.Dispatcher;
using DotNetNuke.Common.Utilities;
using DotNetNuke.Entities.Users;
using MyTypes;
public class SecurityTokenInspector : IParameterInspector
{
public string Roles;
public SecurityTokenInspector(string value)
{
Roles = value;
}
public object BeforeCall(string operationName, object[] inputs)
{
// token will always be the last parameter
int index = inputs.Length - 1;
string TokenId = inputs[index].ToString();
// ********** ERROR LINE BELOW HERE *********** //
// THE ERROR IS HAPPENING WITH THIS LINE: //
// ****** first make sure token exists ****** //
DNNServiceSecurityToken token = DataCache.GetCache("DNNServiceSecurityToken_" + TokenId.ToString());
if (token == null)
{
throw new Exception("Security Token Expired. Please request a new Token");
}
// if token exists, check user roles
UserInfo user = UserController.GetUserById(0, token.UserID);
if (!(user.IsInRole(Roles)))
{
throw new Exception("Access Denied. Role Membership Requirements not met");
return null;
}
return null;
}
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
return;
}
}
<pre></pre>
Imports System
Imports System.ServiceModel.Dispatcher
Imports DotNetNuke.Common.Utilities
Imports DotNetNuke.Entities.Users
Public Class SecurityTokenInspector
Implements IParameterInspector
Public Roles As String
Public Sub New(ByVal value As String)
Roles = value
End Sub
Public Function BeforeCall(ByVal operationName As String, _
ByVal inputs() As Object) As Object _
Implements IParameterInspector.BeforeCall
' token will always be the last parameter
Dim index As Integer = inputs.Length - 1
Dim TokenId As String = inputs(index).ToString()
' first make sure token exists
Dim token As DNNServiceSecurityToken =
_DataCache.GetCache("DNNSecurityToken_" & TokenId)
If token Is Nothing Then
Throw New Exception( _
"Security Token Expired. Please request a new Token")
End If
' if token exists, check user roles
Dim user As UserInfo = UserController.GetUserById(0, token.UserID)
If Not user.IsInRole(Roles) Then
Throw New Exception( _
"Access Denied. Role Membership Requirements not met")
Return Nothing
End If
Return Nothing
End Function
Public Sub AfterCall(ByVal operationName As String, _
ByVal outputs() As Object, ByVal returnValue As Object, _
ByVal correlationState As Object) _
Implements IParameterInspector.AfterCall
Return
End Sub
End Class
【问题讨论】:
-
我建议您阅读一本好的 C# 书籍或教程。这是基本的铸造。
-
你说得对,我上个月才学习 C#,但感谢您的明显建议。
标签: c# vb.net implicit-conversion