1

この問題を解決するのに苦労しています。私はまだ ServiceStack を紹介していますが、MySql データベースを Web アプリケーションに追加しようとしているときに (これはエラーとはまったく関係がない可能性があります)、アプリケーションの実行を停止するエラーに遭遇しました。多くの手順を元に戻しましたが、正常に機能していたときに戻ることができません。どんな助けでも大歓迎です。

エラー:

Method 'get_IsLocal' in type 
ServiceStack.WebHost.Endpoints.Extensions.HttpRequestWrapper' from assembly 
'ServiceStack, Version=3.9.37.0, Culture=neutral, 
PublicKeyToken=null' does not have an implementation.

ソース エラー:

An unhandled exception was generated during the execution of the current 
web request. Information regarding the origin and location of the exception 
can be identified using the exception stack trace below.

スタックトレース:

[TypeLoadException: Method 'get_IsLocal' in type
 'ServiceStack.WebHost.Endpoints.Extensions.HttpRequestWrapper' from assembly
 'ServiceStack, Version=3.9.37.0, Culture=neutral, PublicKeyToken=null' does 
not have an implementation.]
ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory.GetHandler
(HttpContext context, String requestType, String url, String pathTranslated) +0
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.
IExecutionStep.Execute() +346
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean&
completedSynchronously) +155

私のコード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using ServiceStack.Configuration;
using ServiceStack.OrmLite;
using ServiceStack.OrmLite.MySql;
using ServiceStack.ServiceInterface;
using ServiceStack.ServiceInterface.Auth;
using ServiceStack.ServiceInterface.Validation;
using ServiceStack.FluentValidation;
using ServiceStack.ServiceInterface.ServiceModel;
using ServiceStack.WebHost.Endpoints;
using ServiceStack.ServiceHost;
using ServiceStack.Common.Utils;
using ServiceStack.DataAnnotations;
using ServiceStack.Common;

namespace SampleHello2
{
    public class CustomCredentialsAuthProvider : CredentialsAuthProvider
    {
        public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
        {
            //Add here your custom auth logic (database calls etc)
            return (userName == "Ian" && password == "pass");
        }

        public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo)
        {
            //Fill the IAuthSession with data which you want to retrieve in the app eg:
            session.FirstName = "Ian Mc Garry";
            //...

            //Important: You need to save the session!
            authService.SaveSession(session, SessionExpiry);
        }
    }


    public class Global : System.Web.HttpApplication
    {
        public class HelloAppHost : AppHostBase
        {
            //Tell Service Stack the name of your application and where to find your web services
            public HelloAppHost() : base("Hello Web Services", typeof(HelloService).Assembly) { }

            public override void Configure(Funq.Container container)
            {
                //Enable Features
                Plugins.Add(new ValidationFeature());
                Plugins.Add(new AuthFeature(() => new AuthUserSession(),
                    new IAuthProvider[] {
                        new CustomCredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
                    }
                ));

                //register any dependencies your services use, e.g:
                container.RegisterValidators(typeof(HelloValidator).Assembly);

                //Database
                //string conn = "Server=host;Port=3306;Database=db;UserId=user;Password=pass;";
                //container.Register<IDbConnectionFactory>(new OrmLiteConnectionFactory(conn, MySqlDialectProvider.Instance));
            }
        }

        //Initialize your application singleton
        protected void Application_Start(object sender, EventArgs e)
        {
            new HelloAppHost().Init();
        }
    }

}

繰り返しますが、どんな助けでも大歓迎です。問題はおそらく非常に明確ですが、解決できません。また、問題 (エラー/スタック トレース) を自分で理解するのに十分な経験がありません。私が使用しているパッケージを参照しているようServiceStack.WebHost.Endpoints;ですが、それが私が得ることができるすべてです。

どうもありがとう。

4

1 に答える 1

4

.dll が汚れているようです。問題が解決しない場合は、すべての NuGet パッケージを更新してください。NuGet/packagesフォルダーを消去してから、もう一度お試しください。

MySql OrmLiteパッケージの最新バージョン (2013 年 3 月 6 日現在)は v3.9.39 です。

于 2013-03-06T19:38:38.573 に答える