3

多くの人と同じように、CS0103 の問題が発生しましたが、IIS7.5 を使用しているときに、既存のトピックに関する適切な解決策が見つかりませんでした。

奇妙なことは次のとおりです。

  • サイトはIIS5.1 / XPで正常に動作しています(少なくとも、この問題はありません)
  • サイトはIIS7.5 Express / XPで正常に動作しています(Visual Studio 2010から実行した場合)
  • サイトはIIS7.5 Express / W7 で正常に動作しています (Visual Studio 2010 から実行した場合)
  • しかし、IIS7.5 / W7 を使用するとこのエラーが発生します

このエラーに関係するクラスは、BusinessLogicWrapper.cs の App_Code フォルダーにあります ( Visual Studio ではどのアイコンがグレーになっていますか? それは考慮されていないということですか? それとも、特別なフォルダーだからなのでしょうか?)。

SessionProcessing.ashx an の先頭に追加しようとしましたinclude BusinessLogic;が、機能していません。コンパイラは、30 行目ではなく 3 行目で停止し、何を含める必要があるのか​​ わからないと言います...

助けてくれてありがとう


詳しくは:

  • Web サイトのプリコンパイル済みバージョンを実行しています
  • 最初はIIS5.1用に設計されています

部分的な回避策は、仮想ディレクトリの bin フォルダーをルート ディレクトリに配置することでした。

「サーバーエラー」はもうありません(少なくとも現時点では)が、Webサイトはまだ機能していないことに注意してください(さまざまなファイルへのパスに問題があると思います...)。

これは決定的な答えではありません (私から私や他の人への回答です)。


Web サイトに表示される 500 エラー:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0103: The name 'BusinessLogic' does not exist in the current context

Source Error:


Line 28:                                 (context.Request.HttpMethod == "POST" && context.Request.Params["action"] == "DELETE"))
Line 29:                 {
Line 30:                     BusinessLogic.Wrapper.WRITE_TRACE(BusinessLogic.TraceLevel.MEDIUM, "SessionProcessing.ashx End session", "sid:" + sid);
Line 31:                     int res = BusinessLogic.Wrapper.removeSession(sid);
Line 32: 

Source File: c:\Users\blabla\PrecompiledWeb\Web2\SessionProcessing.ashx    Line: 30 

SessionProcessing.ashx の冒頭:

<%@ WebHandler Language="C#" Class="getsession" %>

using System;
using System.Web;
using System.Text;

public class getsession : IHttpHandler, System.Web.SessionState.IReadOnlySessionState
{

    public void ProcessRequest (HttpContext context) {
        context.Response.Clear();
        context.Response.TrySkipIisCustomErrors = true;

        String sid = context.Request.Params["sessionid"];

        try
        {
            if (sid != null)
            {
                //###############################################
                //###############################################
                if (context.Request.HttpMethod == "DELETE" ||
                                (context.Request.HttpMethod == "POST" && context.Request.Params["action"] == "DELETE"))
                {
                    BusinessLogic.Wrapper.WRITE_TRACE(BusinessLogic.TraceLevel.MEDIUM, "SessionProcessing.ashx End session", "sid:" + sid);
                    int res = BusinessLogic.Wrapper.removeSession(sid);

最後にツリーの画像: http://i.stack.imgur.com/szbhA.png


App_Code/BusinessLogicWrapper.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Runtime.InteropServices;

namespace BusinessLogic
{
    /// <summary>
    /// Summary description for BusinessLogicWrapper
    /// </summary>
    public class Wrapper
    {
        //Init
        [DllImport("BusinessLogicLib.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
        public static extern int init(string loginFilePath, string remoteServerName, string[] itemsConnection, int cItems);

web.config (実際には、書き換えには 9 つのルールがあります)

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <httpCookies domain="localhost"/>
  </system.web>
  <system.webServer>
    <!-- add support for ogg files-->
    <staticContent>
      <mimeMap fileExtension=".oga" mimeType="audio/ogg"/>
      <mimeMap fileExtension=".spx" mimeType="audio/ogg"/>
      <!-- <mimeMap fileExtension=".svg" mimeType="image/svg+xml"/> -->
    </staticContent>
    <!--Disable gzip compression (otherwise server pushed data is cut when arriving on the client) -->
    <urlCompression doStaticCompression="true" doDynamicCompression="false"/>
    <rewrite>
      <rules>
        <rule name="COW API session creation">
          <match url="^session$"/>
          <action type="Rewrite" url="SessionProcessing.ashx"/>
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
4

2 に答える 2

2

BusinessLogic(Wrapper)クラスに適切な名前空間を追加するのはどうですか?

<%@ WebHandler Language="C#" Class="getsession" %>

using System;
using System.Web;
using System.Text;
using [YourProjectName].App_Code

Web サイト プロジェクトの場合は、BusinessLogicWrapper.csファイル内の名前空間を完全に削除してみてください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Runtime.InteropServices;


    public class Wrapper
    {
        //Init
        [DllImport("BusinessLogicLib.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
        public static extern int init(string loginFilePath, string remoteServerName, string[] itemsConnection, int cItems);

次に、次のように Wrapper クラスにアクセスします。Wrapper.WRITE_TRACE...

于 2013-03-15T16:48:06.760 に答える
1

回避策(より良いアイデアがある場合はコメントを残す)は、仮想ディレクトリのbinフォルダをルートディレクトリに配置することです。

(少なくとも現時点では)「サーバーエラー」は発生していませんが、Webサイトはまだ機能していません(別のファイルへのパスに問題があると思います...)。

これは(私自身から私自身や他の人への)決定的な答えではありませんが、おそらくそれはより実験的なユーザーにいくつかのアイデアを与える可能性があります!

于 2013-03-18T13:47:15.363 に答える